浏览器怎么渲染数据的

突然发现自己对于css的样式规则一直都没有完全明白,今天写文好好整明白

浏览器渲染原理

1. 浏览器向服务器请求html文件

2. html文件返回浏览器

3. 浏览器解读html文件

    <!DOCTYPE html>//告诉浏览器,这是html5文件
    // html树
    <html lang="en">//语言
    <head> 
        <meta charset="UTF-8"> //这个标签定义了 HTML 文档的字符编码。
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    // 这个标签控制了网页在移动设备上的布局和缩放行为。
    // width=device-width 布局:指定了页面的宽度应该与设备的屏幕宽度相同,这样页面就不会在移动设备上显示过宽或需要用户水平滚动。
    // initial-scale=1.0 缩放:设置了页面的初始缩放级别为 100%,即不缩放。
        <title>Document</title>
        <link rel="stylesheet" href="./style.css">//请求css文件
        <script src="./index.js"></script>//请求js文件
    </head>
    <body> 
    </body>
    </html>

- 按html5样式准备解析

- 开始构建DOM树[可以部分解析]

alt text

html --> head --> link…… -->请求css文件
在请求css文件的同时,遇见<script>,请求js文件,返回js,css文件

- 构建CSSOM树【不可以部分解析】

alt text

-->继续解析html【js解析阻塞了html解析,所以一般js作为body最后一个儿子元素】 -->执行js -->DOM完成构建-->

4. 构建渲染树 -->

alt text

渲染规则

alt text

p.s.先只看这一个元素自己,不要看它的父元素

  1. 样式声明自定义的样式或者浏览器默认样式里有的不冲突的属性

  2. 样式冲突的?权重计算

    • 比较重要性 /默认还是自定义,自定义高
    • 比较特殊性 /自定义当中,计算选择器权重值
      alt text

    alt text

  • 比较源次序 /权重一样后来者居上,覆盖
  1. 也不冲突,就是单纯啥都没有,如果有可继承属性,就去找父元素看看可不可以继承
    alt text
  2. 继承也不行,就赋css自己默认的属性

一般背景颜色默认值是rab(0,0,0,0)透明色,你看见不是透明的原因是,它透明,展示的是父辈的背景颜色

5. 节点布局【以盒子模型为单元】 -->

alt text

6. 页面渲染【以像素的形式】-->

alt text

p.s.
- 回流
当元素属性发生改变且影响布局时(盒子大小变化,包括五要素和字体大小,粗细……),产生回流,相当于 回到节点布局,再次节点布局,页面渲染。

alt text
alt text
- 重绘
当元素属性发生改变且不影响布局时(背景颜色、透明度、字体样式等),产生重绘,相当于不用再次节点布局,直接回到页面渲染,重新渲染页面,动态更新内容。
alt text


文章素材来自bilibilibilibili

posted @ 2024-12-19 18:25  GJ504b  阅读(10)  评论(0编辑  收藏  举报