把CSS转换为浏览器能够理解的结构浏览器就像不能理解 HTML 一样,不理解 CSS ,所以当渲染引擎接收到 CSS 文件时,会执行转换操作,将 CSS 文本转换为浏览器可以理解的 styleSheets 结构 。
在 HTML 中,在浏览器中输入 document 可以查看 html 的结构 。在 css 中,可以输入 document.styleSheets 看到 css 的结构

文章插图
现在的结构是空的,我们来加一些样式,看看效果

文章插图
转换样式表中的属性值,使其标准化属性值标准化就是将所有值转换为渲染引擎容易理解的、标准化的计算值 。我们大致看一下效果:
- 标准化前
body {font-size: 2em;color: black;font-weight: bold;...}复制代码- 标准化后
body {font-size: 16px;color: rgb(0, 0, 0);font-weight: 700;...}复制代码计算出DOM树中每个节点的具体样式样式计算有两个CSS的规则:继承规则和层叠规则- CSS继承规则
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Document</title><style>h1 {color: red;}div {color: blue;}span {font-size: 16px;}</style></head><body><h1>掘金</h1><div><span>浏览器</span><span>渲染原理</span>构建DOM树</div></body></html>复制代码子节点会拥有父节点的样式,由此我们可以画出这样一张图
文章插图
我们还可以打开控制台,看一下选中 span 标签,都会看到哪些内容

文章插图
通过上图,我们可看到一个元素的样式、继承过程等,userAgent 样式是浏览器默认的内置样式,如果我们不提供任何样式,就会使用此样式 。
- 样式层叠规则
样式计算阶段最终输出的内容是每个 DOM 节点的样式,并且保存在了 ComputedStyle 中 。我们可以通过控制台看到某个 DOM 元素最终的计算样式

文章插图
布局阶段现在我们不知道 DOM 元素的几何位置信息,所以现在我们需要计算出 DOM 树中可见元素的几何位置,这个计算过程就叫做布局 。布局阶段有两个过程:
- 创建布局树
- 布局计算
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Document</title><style>h1 {color: red;}div {color: blue;}div span {font-size: 16px;}div span:last-child {display: none;}</style></head><body><h1>掘金</h1><div><span>浏览器</span><span>渲染原理</span>构建DOM树</div></body></html>复制代码构建布局树的过程中,DOM 树中所有不可见的节点都不会包含在这棵树中 。浏览器会遍历 DOM 树中所有能看见的节点,然后把这些节点加入到布局中;不可见的节点就会被忽略,head 标签下面的内容、 div 下最后一个 span 节点都不会在布局树中,我们看一下这个过程图感受一下~
文章插图
布局计算布局计算就是计算布局树节点的坐标位置 。这个计算过程极为复杂 。
分层渲染引擎会为特定的节点生成专用的图层,并生成一棵对应的图层树 。这样做是因为页面中可能含有很多复杂的效果,我们可以打开控制台看一下页面的分层情况

文章插图

文章插图
我们可以看到,渲染引擎给页面分了很多图层,这些图层会按照一定顺序叠加在一起,形成最终的页面

文章插图
推荐阅读
- HTML最基本知识
- 华为|华为Mate 50 Pro最新渲染图:iPhone 13小刘海设计、带5G手机壳触点
- 屏下指纹|iQOO Neo6入网工信部:骁龙8+512GB超大内存、屏下指纹识别
- oa系统是什么?
- 可乐与雪碧、冰红茶的害处?[红茶]
- 土耳其红茶粉怎么喝?[红茶]
- 快递|外卖、快递员工日入上万引热议!上海:将对跑腿费明显上涨采取措施
- 快递|上海配送骑手日收入过万 7成为打赏背后:订单翻倍泡面冲饥、四处为家
- 无人机|3498元!GoPro发布HERO10新款运动相机:5.3K 60fps、仅重54克
- 母爱是一幅山水画,洗去铅华雕饰,留下清新自然仿写句子 母爱就是一幅优美的画仿写句子
