浏览器怎么渲染数据的

news/2025/3/1 8:01:54/文章来源:https://www.cnblogs.com/GJ504b/p/18617763

突然发现自己对于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

rules
alt text

p.s.只看这一个元素自己,先不要看它的父元素
1. 样式声明:自定义的样式或者浏览器默认样式里有的不冲突的属性
2. 样式冲突的?权重计算

  • 比较重要性 /默认还是自定义,自定义高

  • 比较特殊性 /自定义当中,计算选择器权重值
    alt text

    alt text

  • 比较源次序 /权重一样后来者居上,覆盖

  1. 也不冲突,就是单纯啥都没有,如果有可继承属性,就去找父元素看看可不可以继承
    alt text
  2. 继承也不行,就赋默认的属性

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

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

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

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

alt text
alt text

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

文章素材来自bilibili,bilibili

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/855510.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在宝塔里添加反向代理

安装OnlyOffice时,需要配置反向代理; 完成以上操作之后,访问时有可能出现504报错,也可能就可以正常访问了。如果报错可以修改上图反向代理中的目标URL的内容将域名改成127.0.0.1。我当时改成http://127.0.0.1:9633就可以了本文来自博客园,作者:飞龙在生,转载请注明原文链…

2024 Clion安装使用教程(附激活以及常见问题处理)

第一步:下载Clion安装包 访问Clion官网,下载Clion第二步: 安装 Clion下载完成后,进行安装,next,安装完成点击xx 关掉程序! 第三步: 下载补丁 Clion补丁文件 点击获取补丁下载成功后,打开标注的文件文件夹 , 进入到文件夹 /jetbra 注意: 这个文件夹单独copy一份,所属文…

语言沟通中的设计实现

系统设计的目的是更好的支持需求 我们常说,只要业务能将你的需求描述清楚,能自圆其说,我们就有办法实现。 这其实是系统设计的最理想的状态, 如果业务没想清楚,那么在系统实现中,一定会把问题暴露出来。很多时候,问题的暴露源于没有考虑周全亦或都没有考虑这种场景! 比…

Python 解密 Navicat导出的数据库连接,Navicat数据库连接导入DBeaver。

最近公司收到Navicat律师告知书,让停止使用Navicat,用了那么久的数据库连接工具,不得不换其他的。 最终选择了开源的DBeaver。 安装完DBeaver后,把Navicat导出的connections.ncx文件直接导入DBeaver。直接访问提示连接失败,因为connections.ncx文件里的密码都是加密的。 如…

营销系统缺失投放概念

营销系统现阶段分为营销权益工具、玩法、招商提报三大块。其中权益工具主要负责创建券、促销、换购类优惠权益。玩法负责用户与平台之间的连接,通过任务式交互获得权益。招商提报主要是面向商家参与活动的连接。比如要做一个活动,需要从招商发布活动信息,提报统一创建营销权…

一款使用NET+MQTT+Arduino开发的智能浇花工具

最近闲来无事,对硬件控制产生了兴趣。看到家里的盆栽,我突然萌生了制作一个自动浇水工具的想法。通过在淘宝搜索并查找相关资料,我了解了需要的硬件和通信协议。接下来,我们先看看需要做哪些准备工作(如安装 Arduino、.NET、EMQX 工具等,请自行搜索并完成安装)。 准备工…

营销平台过去与展望

营销是什么 营销是商家给用户权益,让用户少花钱买到商品,以此达到商家的营销目的。 以此逻辑为基础,展开几个关键角色用户 平台 商家他们各自在营销侧的诉求是用户需要有获得优惠的途径 门店需要有发放优惠的能力 商家需要有优惠活动的功能营销工具权益建设 以这些诉求为切入…

圈选概念

电商系统中,最核心的几个点就是如何圈选出商品、消费者、门店 在整个逻辑中,圈选有两个点选出目标集合 给出圈选的规则选出目标集合 以商品为例,在商品选品中,选出目标集合,有几种方式通过人工方式将已有的商品列表导入到系统中 通过外部系统收集的商品列表导入到系统中,…

python 悬臂梁的有限元分析

依赖包 fenics是一种用于有限元计算的动态面向对象库,它提供了一种专用的数学语言UFL来表述变分形式,并自动生成底层C++代码。 fenics 名称释义:fe:finite element的简写 cs:computational software的简写 ni:有了fe和cs后,由于最初fenics软件是在芝加哥大学(简称为phoe…

枚举思想——算法学习(一)

枚举思想——算法学习(一)前言 在算法学习的道路上,枚举思想是一种简单却强大的思想。作为一种暴力求解方法,枚举算法通过穷尽所有可能的解,从中找到满足条件的最优解或所有解。虽然它看似“低效”,但在解决许多实际问题时却显得直观且有效,尤其是在问题规模可控的情况下…

20222307 2024-2025-1 《网络与系统攻防技术》实验八实验报告

1.实验内容 (1)Web前端HTML 能正常安装、启停Apache。理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML。 (2)Web前端javascipt 理解JavaScript的基本功能,理解DOM。 在(1)的基础上,编写JavaScript验证用户名、密码的规则。在用户点击登陆按钮后回显“欢迎+…

《Django 5 By Example》读后感

一、 为什么选择这本书? 本人的工作方向为Python Web方向,想了解下今年该方向有哪些新书出版,遂上packt出版社网站上看了看,发现这本书出版时间比较新(2024年9月),那就它了。 从2024年11月11日至2024年12月18日期间,花了 22 天阅读完《Django 5 By Example》(《Django项目…