前端知识点总结

170 阅读3分钟

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树就没必要停下文档的解析等待他们,样式还是没有加载和解析,脚本将得到错误的值,

计算机网络

HTTP协议