美文网首页前端
css的渲染原理

css的渲染原理

作者: 梦回98 | 来源:发表于2019-10-20 20:11 被阅读0次
①、CSS是Cascading Style **Sheets**(层叠样式表)的简称

②、CSS语言是一种标记语言,它不需要编译,可以直接有浏览器解释执行(属于
浏览器解释性语言).在标准网页设计中负责网页内容(XHTML)的表现。

③、CSS是由W3C的CSS工作组产生和维护的。

一、浏览器是如何渲染和加载页面的

要搞懂这个可以从这个常规流程开始:

1、浏览器的下载顺序是从上到下,渲染的顺序也是从上到下,下载和渲染是同时进行的。

2、在渲染到页面的某一部分时,其上面的所有部分都已经下载完成(并不是说所有相关联的元素都已经下载完)。

3、如果遇到语义解释性的标签嵌入文件(js脚本,css样式),那么此时的IE下载过程会启用单独连接进行下载。

4、并且在下载后进行解析,解析过程中,停止页面所有往下元素的下载。

5、样式表在下载完成后,将和以前下载的所有样式表一起进行解析,解析完成后,将对此前所有元素(含以前已经渲染的)重新进行渲染。

6、JS、CSS中如有重定义,后定义函数将覆盖前定义函数。

渲染的效率与下面三点有关:

1、CSS选择器的查询定位效率

2、浏览器的渲染模式和算法

3、要进行渲染内容的大小

二、CSS的渲染原理

1、浏览器在接收到服务器返回的html页面后,

2、浏览器开始构建DOM树 DOM TREE,遇到CSS样式会构建CSS规则树 CSS RULE TREE,

3、遇到 javascript会通过 DOM API和CSSDOM API来操作DOM TREE和 CSS RuLe Tree,

4、浏览器引擎会通过DOM Tree和CSS Rule Tree,解析完成后,

5、最后,渲染树构建完成后就是“布局”处理,也就是确实每个节点在屏幕上的确切显示位置

6、下个步骤(渲染之后),开始“绘制”,便利渲染树,并用UI后端层,将每一个节点绘制出来!有道云笔记

三、CSS渲染规则

css的渲染规则,是从上到下从左到右渲染的。

.main h4  a { font-size: 14px; }

渲染过程是这样的:首先先找到所有的a,沿着a的父元素查找h4,然后在沿着h4,查找.main。中途找到了符合匹配规则的节点就加入结果集。如果找到根元素的html都没有匹配,则这条路径不在遍历。下一个a开始重复这个查找匹配,直至没有a继续查找。

浏览器的这种规则是为了尽早过滤掉一些无关的样式规则和元素。

四、css权重值

权值,代表着优先级,权值越大,优先级越高。同种类型的选择器权重值相同,后定义的选择器会覆盖先定义的选择器。

1、important最高

2、内联:1000

3、ID:100

4、**class**:10

5、Tag:1

 注:组合使用,权值会叠加

五、影响DOM树构建的因素

1、HTML响应流被阻塞在网络中

2、有加载未完成的脚本

3、遇到<script>,但是此时还有为加载完成的样式文件

六、页面渲染与执行过程 通过一个例子,我们来详细看看页面渲染和执行过程到底是怎么工作的:

<html>

<body>

  <link href="example.css"  rel="stylesheet">

  <div>Hi here</div>

<script>

 document.write('<script src="other.js"><scr' + 'ipt>')

</script>

  div>Hi again</div>

<script src="last.js"></script>

</body>

</html>

1、解析器遇到example.css,并将它从网络中下载下来。下载样式表的过程是耗时的,但是解析器并没有被阻塞,继续往下解析。

2、解析器遇到<script>标签,但是由于样式文件下载未完成,阻塞了该脚本的执行(上面已指出)。解析器(构建DOM树和 CSS规则树)被阻塞住,不能继续往下解析

3、因为渲染树是DOM树 和 CSS规则树 来构造,所以此时,渲染树的构建也被阻塞

4、渲染树是绘制触发条件之一,因此Hi there!也就不能被绘制(painting->display)到页 面中。

绘制的触发条是:渲染树构建完成,并遇到了阻塞

5、接下来,一旦example.css下载完成,内联的脚本执行完了之后,解析器开始执行遇到的<script>标签,并查到src属性中的other.js文件,立即被阻塞,开始下载other.js;

6、因为解析器被阻塞,触发了绘制条件,浏览器就会收到绘制的请求,“Hi,here”就会显示在页面上

7、other.js加载完成了之后,解析器继续向下解析,遇到 last.js 之后又被阻塞,

8、因为解析器再次被阻塞,又形成了 “绘制” 条件,因此绘制DOM树的内容,即,“Hi,again”就会显示在页面上。

9、last.js加载完成,并且被执行。

七、优化你的css

1、把 Stylesheets 放在 HTML 页面头部

2、嵌套层级不要超过三级

3、 css 命名规范,书写规范。

4、多用继承属性

5、少用滤镜,好用hack,少用position: absolute;

6、不要再id选择器和class选择器前使用标签名

7、平铺的背景图片不要过小,1px的图片平铺长宽25px的区域块,需要2500次,太影响渲染速度。

8、谨慎使用float,尽量多使用弹性盒

9、合理化布局(模块化布局)

10、 尽量少用通配符,只用通配符设定一切基础的样式。

对CSS渲染的知识点概括,如果有不足请多指正

[图片上传失败...(image-49cad6-1571572947243)]

相关文章

  • 前端性能优化-渲染优化

    一、浏览器渲染原理和关键渲染路径 浏览器渲染原理:读取html,css文本,构建DOM树。(DOM ,CSSOM)...

  • css知识总结

    #css知识总结 1.浏览器渲染原理 渲染树构建,布局,绘制----谷歌团队文章 渲染树图解 2. CSS动画的两...

  • css渲染原理

    css渲染原理 浏览器渲染原理浏览器接收到服务器返回的html页面。浏览器开始构建DOM树(DOM TREE),遇...

  • CSS动画总结

    1. 浏览器渲染原理 浏览器渲染过程 根据HTML构建HTML树(DOM) 根据CSS构建CSS树(CSSOM) ...

  • css的渲染原理

    一、浏览器是如何渲染和加载页面的 要搞懂这个可以从这个常规流程开始: 1、浏览器的下载顺序是从上到下,渲染的顺序也...

  • CSS知识总结

    浏览器渲染原理 浏览器渲染过程 根据HTML构建HTML树(DOM) 根据CSS构建CSS树(CSSOM) 将两棵...

  • CSS 总结(渲染原理+css动画transition/anim

    浏览器渲染原理 浏览器渲染必经之路 步骤: 根据HTML构建HTML树(DOM) 根据css构建css树(CSSO...

  • CSS动画

    Get Started • 动画的原理• 浏览器渲染原理• CSS动画优化• transform全解• trans...

  • CSS知识总结

    浏览器渲染原理 浏览器渲染大致有以下几个过程: 根据HTML构建HTML树(DOM) 根据CSS构建CSS树(CS...

  • 浏览器渲染原理及 CSS 动画

    一、浏览器渲染原理 根据 HTML 构建 HTML 树(DOM) 根据 CSS 构建 CSS 树(CSSOM) 将...

网友评论

    本文标题:css的渲染原理

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