HTML面试题

作者: 星星会发光X | 来源:发表于2021-01-09 11:55 被阅读0次

1.iframe有哪些缺点?

iframe是一种框架,也是一种很常见的网页嵌入方式。

「iframe的优点」
  • iframe能够原封不动的把嵌入的网页展现出来。
  • 如果有多个网页引用iframe,那么你只需要修改iframe的内容,就可以实现调用的每一个页面内容的更改,方便快捷。
  • 网页如果为了统一风格,头部和版本都是一样的,就可以写成一个页面,用iframe来嵌套,可以增加代码的可重用。
  • 如果遇到加载缓慢的第三方内容如图标和广告,这些问题可以由iframe来解决。
「iframe的缺点」
  • 会产生很多页面,不容易管理。
  • iframe框架结构有时会让人感到迷惑,如果框架个数多的话,可能会出现上下、左右滚动条,会分散访问者的注意力,用户体验度差。
  • 代码复杂,无法被一些搜索引擎索引到,这一点很关键,现在的搜索引擎爬虫还不能很好的处理iframe中的内容,所以使用iframe会不利于搜索引擎优化。
  • 很多的移动设备(PDA 手机)无法完全显示框架,设备兼容性差。
  • iframe框架页面会增加服务器的http请求,对于大型网站是不可取的。
  • 现在基本上都是用Ajax来代替iframe,所以iframe已经渐渐的退出了前端开发。

2.label的作用是什么?是怎么用的?

例子1: 点击" 用户名:" 就可以定位光标到输入框

<form><label for="myid "> 用户名:</label>
<input type="text" id="myid" /></form>  

例子2: 点击" 用户名:" 或按键alt+1, 都可以定位光标到输入框

<form>
    <label for="myid" accesskey="1"> 用户名:</label>
    <input type="text" id="myid" tabindex="1" />
</form>  
for 属性功能:表示Label 标签要绑定的HTML 元素,你点击这个标签的时候,所绑定的元素将获取焦点。
acesskey 属性

功能:表示访问Label 标签所绑定的元素的热键,当您按下热键,所绑定的元素将获取焦点。
局限性:accessKey 属性所设置的快捷键不能与浏览器的快捷键冲突,否则将优先激活浏览器的快捷键。

3.HTML5的form如何关闭自动完成功能?

HTML的输入框可以拥有自动完成的功能,当你往输入框输入内容的时候,浏览器会从你以前的同名输入框的历史记录中查找出类似的内容并列在输入框下面,这样就不用全部输入进去了,直接选择列表中的项目就可以了。
但有时候我们希望关闭输入框的自动完成功能,例如当用户输入内容的时候,我们希望使用AJAX技术从数据库搜索并列举而不是在用户的历史记录中搜索。

关闭输入框的自动完成功能有3种方法:

1.在IE的Internet选项菜单里的内容--自动完成里面设置
2.设置form的autocomplete为"on"或者"off"来开启或者关闭自动完成功能
3.设置输入框的autocomplete为"on"或者"off"来开启或者关闭该输入框的自动完成功能

4.什么是 HTML5 的基本构件(building block)?

1.语义 - 提供更准确地描述内容。
2.连接 - 提供新的方式与服务器通信。
3.离线和存储 - 允许网页在本地存储数据并有效地离线运行。
4.多媒体 - 在 Open Web 中,视频和音频被视为一等公民(first-class citizens)。
5.2D/3D 图形和特效 - 提供更多种演示选项。
6.性能和集成 - 提供更快的访问速度和性能更好的计算机硬件。
7.设备访问 - 允许使用各种输入、输出设备。
8.外观 - 可以开发丰富的主题。

5.浏览器是怎么对HTML5的离线储存资源进行管理和加载的呢?

  • 在浏览器的html头部加上manifest属性,如果是第一次访问浏览器会根据manifest的内容进行下载存储离线内容,如果已经访问过则从离线存储中进行加载,然后在比对服务器如果有新内容在更新离线存储
  • 离线的情况下,浏览器就直接使用离线存储的资源。

6.浏览器的渲染过程?

1、将获取的html解析成dom树
2、处理css,构成层叠样式表模型CSSOM
3、将dom树和CSSOM合并为渲染树
4、根据CSSOM将渲染树的节点布局计算
5、将渲染树节点样式绘制到页面上

// 注意
在渲染的过程中是自上而下渲染,
js会阻塞页面的渲染,优先等js执行完成
如果在渲染的过程中改变了样式,会造成回流需要重新渲染

7.link和@import的区别?

1、从属关系区别:
link属于html标签,而@import是css提供的。
2、加载顺序区别:
页面被加载时,link会同时被加载,而@import引用的css会等到页面被加载完再加载。
3、兼容性区别:
import只在IE5以上才能识别,而link是html标签,无兼容问题。
4、dom可操作性区别:
可以通过JS 操作 DOM ,插入link标签来改变样式;由于 DOM 方法是基于文档的,无法使用@import的方式插入样式
5、权重区别:
如果已经存在相同样式,@import引入的这个样式将被该 CSS 文件本身的样式层叠掉,表现出link方式的样式权重高于@import的权重这样的直观效果。
(简而言之,link和@import,谁写在后面,谁的样式就被应用,后面的样式覆盖前面的样式。)

8.src与href的区别?

1、href 是指向网络资源所在位置,建立和当前元素(锚点)或当前文档(链接)之间的链接,用于超链接。
2、src是指向外部资源的位置,指向的内容将会嵌入到文档中当前标签所在位置;在请求src资源时会将其指向的资源下载并应用到文档内,例如js脚本,img图片和frame等元素。当浏览器解析到该元素时,会暂停其他资源的下载和处理,直到将该资源加载、编译、执行完毕,图片和框架等元素也如此,类似于将所指向资源嵌入当前标签内。这也是为什么将js脚本放在底部而不是头部。

9.从输入url到页面展示发生了什么?

从浏览器输入 URL 到页面渲染的整个过程都是由 浏览器架构中的各个进程之间的配合完成。

1.浏览器主进程: 管理子进程、提供服务功能
2.渲染进程:将HTML、CSS、JS渲染成界面,js引擎v8和排版引擎Blink就在上面,他会为每一个tab页面创建一个渲染进程
3.GPU进程:本来是负责处理3Dcss的,后来慢慢的UI界面也交给GPU来绘制
4.网络进程:就是负责网络请求,网络资源加载的进程
5.插件进程:负责插件的运行的,因为插件很容易崩溃,把它放到独立的进程里不要让它影响别人

浏览器的多进程架构

从用户输入信息到页面展示的不同阶段,是不同的进程在发挥作用,示意图如下:



从图中可以看出,整个过程是需要各个进程之间相互配合完成的,过程大致可以描述为:

1.用户输入url,处理输入信息,主进程开始导航,交给网络进程干活

2.网络进程发起网络请求,其中有可能会发生重定向

3.服务器响应URL之后,主进程就要通知渲染进程,你要开始干活了

4.渲染进程准备好了,要想渲染进程提交数据,这个时间叫做提交文档

5.渲染进程接受到数据,完成页面渲染。

具体过程
1.输入url

  • 用户输入url,处理输入信息:

  • 如果为非url结构的字符串,交给浏览器默认引擎去搜索改字符串;

  • 若为url结构的字符串,浏览器主进程会交给 网络进程 ,开始干活。

2.1 查找浏览器缓存

  • 网络进程会先看看是否存在本地缓存,如果有就直接返回资源给浏览器进程,无则下一步 DNS-> IP -> TCP

2.2 DNS解析

  • 网络进程拿到url后,先会进行DNS域名解析得到IP地址。如果请求协议是HTTPS,那么还需要建立TLS连接。

2.3 建立TCP连接,三次握手

  • 接下来就是利用IP地址和服务器建立TCP连接。连接建立之后,向服务器发送请求。
  1. 服务器响应
  • 服务器收到请求信息后,会根据请求信息生成响应行、响应头、响应体,并发给网络进程。网络进程接受了响应信息之后,就开始解析响应头的内容。

  • 网络进程解析响应行和响应头信息的过程:

3.1 重定向

  • 如果响应行状态码为301(永久重定向)和302(临时),那么说明需要重定向到其他url。这时候网络进程会从响应头中的Location字段里读取重定向的地址,并重新发起网络请求。
    3.2 响应数据处理

  • 导航会通过请求头的Content-type字段判断响应体数据的类型。浏览器通过这个来决定如何显示响应体的内容。比如:若为application/octet-stream,则会按照下载类型来处理这个请求,导航结束。若为text/html,这就告诉浏览器服务器返回的是html格式,浏览器会通知渲染进程,你要干活了。

  1. 准备渲染进程
  • 默认情况,每个页面一个渲染进程。但若处于同一站点(同根域名+协议),那么渲染进程就会复用。
  1. 提交文档
  • 渲染进程准备好后,浏览器进程发出“提交文档的消息”,渲染进程接受了消息之后,会跟网络进程简历传输数据的管道。
  • 等数据传输完成了,渲染进程会告诉浏览器进程,确认文档提交,这时候浏览器会更新页面,安全状态,url,前进后退的历史。
  • 到这里导航结束,进入渲染阶段。
注:当浏览器刚开始加载一个地址之后,标签页上的图标便进入了加载状态。但此时图中页面显示的依然是之前打开的页面内容,并没立即替换为百度首页的页面。因为需要等待提交文档阶段,页面内容才会被替换。

相关文章

网友评论

    本文标题:HTML面试题

    本文链接:https://www.haomeiwen.com/subject/cxrcaktx.html