html4
1.标准模式与兼容模式各有什么区别?
标准模式的渲染方式和JS引擎的解析方式都是以该浏览器支持的最高标准运行。在兼容模式中,页面以宽松的向后兼容的方式显示,模拟老式浏览器的行为以防止站点无法工作。
2.SGML. HTML .XML和XHTML的区别?
-
SGML是标准通用标记语言,是一种定义电子文档结构和描述其内容的国际标准语言,是所有电子文档标记语言的起源。
-
HTML是超文本标记语言,主要是用于规定怎么显示网页。
-
XML是可扩展标记语言是未来网页语言的发展方向,XML和HTML的最大区别就在于XML的标签是可以自己创建的,数量无限多,而HTML的标签都是固定的而且数量有限。
-
XHTML也是现在基本上所有网页都在用的标记语言,他其实和HTML没什么本质的区别,标签都—样,用法也都一样,就是比 HTML更严格,比如标签必须都用小写,标签都必须有闭合标签等。
3.空元素定义
-
标签内没有内容的HTML标签被称为空元素。空元素是在开始标签中关闭的。
-
常见的空元素有:br hr img input link meta
4.async和defer 的作用是什么?有什么区别?(浏览器解析过程)
-
脚本没有defer或async,浏览器会立即加载并执行指定的脚本,也就是说不等待后续载入的文档元素,读到就加载并执行。
-
defer属性表示延迟执行引入的JavaScript,即这段Javascript加载时HTML并未停止解析,这两个过程是并行的。当整个document解析完毕后再执行脚本文件,在DOMContentLoaded事件触发之前完成。多个脚本按顺序执行。
-
async属性表示异步执行引入的JavaScript,与defer的区别在于,如果已经加载好,就会开始执行,也就是说它的执行仍然会阻塞文档的解析,只是它的加载过程不会阻塞。多个脚本的执行顺序无法保证。
5.什么是文档的预解析?(浏览器解析过程)
-
Webkity和Firefox都做了这个优化,当执行JavaScript脚本时,另一个线程解析剩下的文档,并加载后面需要通过网络加载的资源。这种方式可以使资源并行加载从而使整体速度更快。需要注意的是,预解析并不改变DOM树,它将这个工作留给主解析过程,自己只解析外部资源的引用,比如外部脚本、样式表及图片。
6.CSS如何阻塞文档解析?(浏览器解析过程)
-
理论上,既然样式表不改变DOM 树,也就没有必要停下文档的解析等待它们,然而,存在一个问题,JavaScript脚本执行时可能在文档的解析过程中请求样式信息,如果样式还没有加载和解析,脚本将得到错误的值,显然这将会导致很多问题。
-
所以如果浏览器尚未完成CSSOM 的下载和构建,而我们却想在此时运行脚本,那么浏览器将延迟.JavaScript脚本执行和文档的解析,直至其完成CSSOM的下载和构建。也就是说,在这种情况下卜浏览器会先下载和构建CSSOM,然后再执行JavaScript,最后再继续文档的解析。
7.渲染页面时常见哪些不良现象?(浏览器渲染过程)
-
FoUC:主要指的是样式闪烁的问题,由于浏览器渲染机制(比如firefox),在 CSS加载之前,先呈现了HTML,就会导致展示出无样式内容,然后样式突然呈现的现象。会出现这个问题的原因主要是css加载时间过长,或者css 被放在了文档底部。
-
白屏;有些浏览器渲染机制人比如chrome)要先构建DOM树和CSSOM 树,构建完成后再进行渲染,如果CSS部分放在HTML尾部,由于CSS未加载完成,浏览器迟迟未渲染,从而导致白屏;也可能是把js文件放在头部,脚本的加载会阻塞后面文档内容的解析,从而页面迟迟朱渲染出来,出现白屏问题。
8.如何优化关键渲染路径?(浏览器渲染过程)
-
关键资源的数量。
-
关键路径长度。
-
关键字节的数量。
优化关键渲染路径的常规步骤如下:
-
对关键路径进行分析和特性描述:资源数、字节数、长度。
-
最大限度减少关键资源的数量:删除它们,延迟它们的下载,将它们标记为异步等。
-
优化关键字节数以缩短下载时间(往返次数)。
-
优化其余关键资源的加载顺序∶您需要尽早下载所有关键资产,以缩短关键路径长度。
-
9.什么是重绘和回流?(浏览器绘制过程)
重绘:当渲染树中的一些元素需要更新属性,而这些属性只是影响元素的外观、风格,而不会影响布局的操作,比如background-color,我们将这样的操作称为重绘。
回流:当渲染树中的一部分(或全部)因为元素的规模尺寸、布局、隐藏等改变而需要重新构建的操作,会影响到布局的操作,这样的操作我们称为回流。
常见引起回流属性和方法:
任何会改变元素几何信息(元素的位置和尺寸大小)的操作,都会触发回流
-
添加或者删除可见的DOM元素;
-
元素尺寸改变——边距、填充,边框、宽度和高度
-
内容变化,比如用户在input框中输入文字
-
浏览器窗口尺寸改变——resize事件发生时
-
计算offsetWidth和offsetHeight属性
-
设置style属性的值
-
当你修改网页的默认字体时。
10.如何减少回流?(浏览器绘制过程)
-
使用transform替代top。
-
不要把节点的属性值放在一个循环里当成循环里的变量。
-
不要使用table布局,可能很小的一个小改动会造成整个table的重新布局。
-
把 DOM离线后修改。如:使用documentFragment对象在内存里操作DOM。
-
不要一条条改Dom。
11.为什么操作 DOM慢?(浏览器绘制过程)
一些DOM 的操作或者属性访问可能会引起页面的回流和重绘,从而引起性能上的消耗。
12.DOMContentLoaded事件和Load事件的区别?
当初始的HTML 文档被完全加载和解析完成之后,DOMContentLoaded事件被触发,而无需等待样式表图像和子框架的加载完成。
13.简述一下你对HTML语义化的理解?
-
用正确的标签做正确的事情。
-
html语义化让页面的内容结构化,结构更清晰,便于对浏览器、搜索引擎解析。
-
即使在没有样式CSS情况下也以一种文档格式显示,并且是容易阅读的;
-
搜索引擎的爬虫也依赖于HTML标记来确定上下文和各个关键字的权重,利于SEO ;
-
使阅读源代码的人对网站更容易将网站分块,便于阅读维护理解。
14.如何更新缓存:
-
更新manifest文件。
-
通过javascript操作。
-
清除浏览器缓存。
15.Flash、 Ajax各自的优缺点,在使用中如何取舍?
Flash
-
Flash适合处理多媒体、矢量图形、访问机器
-
对CSs、处理文本上不足,不容易被搜索
Ajax
-
Ajax 对CSS、文本支持很好,支持搜索
-
多媒体、矢量图形、机器访问不足
共同点
-
与服务器的无刷新传递消息
-
可以检测用户离线和在线状态
-
操作DOM
16.怎么重构页面?
-
编写cSs
-
让页面结构更合理化,提升用户体验
-
实现良好的页面效果和提升性能
17.css reset和normalize.css有什么区别?
-
reset的目的,是将所有的浏览器的自带样式重置掉,这样更易于保持各浏览器渲染的一致性。
-
normalize 的理念则是尽量保留浏览器的默认样式,不进行太多的重置,而尽力让这些样式保持一致并尽可能与现代标准相符合。
-
.Normalize.css修复了浏览器的bug,它修复了常见的桌面端和移动端浏览器的 bug。这往往超出了 Reset所能做到的范畴。关于这一点,Normalize.css修复的问题包含了HTML5元素的显示设置、预格式化文字的 font-size问题、在IE9中 SVG的溢出、许多出现在各浏览器和操作系统中的与表单相关的bug。
18.用于预格式化文本的标签是?
预格式化就是保留文字在源码中的格式,最后显示出来样式与源码中的样式一致所见即所得。
标签:浏览器,渲染,html,面试,HTML,文档,解析,加载 From: https://www.cnblogs.com/yuan947022015/p/17631658.html