详解浏览器渲染页面过程

发布时间 - 2026-01-10 22:56:36    点击率:

详解浏览器渲染页面过程

1.解析HTML文件,创建DOM树

自上而下,遇到任何样式(link、style)与脚本(script)都会阻塞(外部样式不阻塞后续外部脚本的加载)。

2.解析CSS

优先级:浏览器默认设置<用户设置<外部样式<内联样式<HTML中的style样式;
特定级:id数*100+类或伪类数*10+tag名称*1

3.将CSS与DOM合并,构建渲染树(renderingtree)

DOM树与HTML一一对应,渲染树会忽略诸如head、display:none的元素

4.布局和绘制,重绘(repaint)和重排(reflow)

重排:若渲染树的一部分更新,且尺寸变化,就会发生重排;
重绘:部分节点需要更新,但不改变其他集合形状。如改变某个元素的颜色,就会发生重绘。 

附:

1.重绘和重排何时会发生:

(1)增加或删除DOM节点;
(2)display:none(重排并重绘);visibility:hidden(重排);
(3)移动页面中的元素;
(4)增加或修改样式;
(5)用户改变窗口大小,滚动页面等。

2.如何减少重绘和重排以提升页面性能:

(1)不要一个个修改属性,应通过一个class来修改

错误写法:div.style.width="50px";div.style.top="60px";
正确写法:div.className+=" modify";

(2)clone节点,在副本中修改,然后直接替换当前的节点;
(3)若要频繁获取计算后的样式,请暂存起来;
(4)降低受影响的节点:在页面顶部插入节点将影响后续所有节点。而绝对定位的元素改变会影响较少的元素;
(5)批量添加DOM:多个DOM插入或修改,应组成一个长的字符串后一次性放入DOM。使用innerHTML永远比DOM操作快。(特别注意:innerHTML不会执行字符串中的嵌入脚本,因此不会产生XSS漏洞)。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# 浅析浏览器渲染页面过程  # 浏览器渲染页面过程  # 浏览器  # 渲染  # 浏览器加载、渲染和解析过程黑箱简析  # 就会  # 多个  # 自上而下  # 希望能  # 或删除  # 谢谢大家  # 较少  # 但不  # 若要  # 默认设置  # 加载  # id  # 伪类数  # lt  # tag  # head  # renderingtree  # DOM  # br  # HTML 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 高端网站建设与定制开发一站式解决方案 中企动力  动图在线制作网站有哪些,滑动动图图集怎么做?  活动邀请函制作网站有哪些,活动邀请函文案?  Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康  Laravel怎么使用Blade模板引擎_Laravel模板继承与Component组件复用【手册】  如何快速搭建高效可靠的建站解决方案?  如何在IIS7上新建站点并设置安全权限?  Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  如何快速选择适合个人网站的云服务器配置?  Bootstrap整体框架之JavaScript插件架构  焦点电影公司作品,电影焦点结局是什么?  如何快速搭建二级域名独立网站?  laravel怎么在请求结束后执行任务(Terminable Middleware)_laravel Terminable Middleware请求结束任务执行方法  Laravel如何实现数据导出到CSV文件_Laravel原生流式输出大数据量CSV【方案】  Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性  EditPlus中的正则表达式 实战(1)  Laravel如何实现一对一模型关联?(Eloquent示例)  Linux系统命令中screen命令详解  如何用JavaScript实现文本编辑器_光标和选区怎么处理  Laravel怎么解决跨域问题_Laravel配置CORS跨域访问  Laravel模型事件有哪些_Laravel Model Event生命周期详解  如何在Windows虚拟主机上快速搭建网站?  深入理解Android中的xmlns:tools属性  python中快速进行多个字符替换的方法小结  如何用花生壳三步快速搭建专属网站?  香港服务器WordPress建站指南:SEO优化与高效部署策略  网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?  Laravel如何优化应用性能?(缓存和优化命令)  百度输入法全感官ai怎么关 百度输入法全感官皮肤关闭  七夕网站制作视频,七夕大促活动怎么报名?  Laravel如何实现多表关联模型定义_Laravel多对多关系及中间表数据存取【方法】  php静态变量怎么调试_php静态变量作用域调试技巧【解答】  Laravel用户密码怎么加密_Laravel Hash门面使用教程  音响网站制作视频教程,隆霸音响官方网站?  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  如何在橙子建站中快速调整背景颜色?  Laravel怎么处理异常_Laravel自定义异常处理与错误页面教程  如何在宝塔面板中修改默认建站目录?  Laravel如何处理异常和错误?(Handler示例)  WEB开发之注册页面验证码倒计时代码的实现  Google浏览器为什么这么卡 Google浏览器提速优化设置步骤【方法】  Java遍历集合的三种方式  java中使用zxing批量生成二维码立牌  Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  微信小程序 canvas开发实例及注意事项  Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】  打造顶配客厅影院,这份100寸电视推荐名单请查收  如何打造高效商业网站?建站目的决定转化率