HTML
行级元素和块级元素的区别
-
内容上,行级元素只能包含文本元素和其他行内元素(如果行内元素包含块级元素会怎样?),而块级元素可以包含行内元素和其他块级元素。
-
行内元素设置width和height无效,但是可以设置line-height。同时,行内元素设置margin和padding不会对其他元素造成影响
空元素定义
- 标签内没有内容的元素称为空元素,空元素是在开始标签中关闭的
- br img hr input link meta
link标签定义
- link标签定义文档与外部资源的关系,其中的ref属性定义了当前文档与被链接文档之间的关系。
页面样式导入时,用link和使用@import有什么区别?
- @import是CSS的语法,只用引入样式表的作用。link是HTML标签,可以加载CSS文件,还可以定义RSS、rel连接属性、引入网站标签等
- link引入的CSS被同时加载;@import引入的CSS在页面加载完毕之后加载
- 兼容性区别:@import只有在IE5+才能识别,link作为HTML标签不存在兼容性问题
- 使用dom控制样式时的差别。使用javascript控制dom去改变样式的时候
- 建议使用link标签,慎用@import标签
对浏览器的理解
- 简单来说,浏览器可以分为两部分,shell和内核
- shell是浏览器的外壳,如菜单、工具栏等,主要提供给用户操作界面,参数设置等等
- 内核是基于标记语言显示内容的程序或者模块
对浏览器内核的理解
- 渲染引擎:职责是渲染,即在浏览器窗口显示所请求的内容
- JS引擎:解析执行javascript实现网页动态效果
浏览器的渲染原理
- 首先解析收到的文档,根据文档定义构建一棵DOM树,DOM树是由DOM元素及属性节点组成的
- 然后对CSS进行解析生成CSSOM规则树,这一过程是很消耗资源的,因为节点样式可以继承也可以自行设置。我们要尽可能避免写过于具体的CSS选择器,然后,HTML也应该减少无意义标签
- 之后,利用DOM树和CSSOM树生成渲染树。渲染树只会包含需要显示的节点和这些节点的样式信息,然后根据渲染树布局(回流)。
- 回流阶段,浏览器主要做的事情是弄清楚各个节点在页面中的确切位置的大小
- 之后是绘制阶段,遍历渲染树,将他们显示在屏幕上
文档预解析
在执行JS的时候,另外一个线程解析剩下的文档并加载资源,但是不改变DOM树,只是解析外部资源的引用。
CSS如何阻塞文档解析
样式表不改变DOM树就没必要停下文档的解析等待他们,样式还是没有加载和解析,脚本将得到错误的值,