首页 > 其他分享 >回流/重绘

回流/重绘

时间:2024-03-26 20:34:35浏览次数:14  
标签:浏览器 DOM 元素 几何 回流 重绘

  • 回流:布局引擎会根据各种样式计算每个盒子在页面上的大小与位置

  • 重绘:当计算好盒模型的位置、大小及其他属性后,浏览器根据每个盒子特性进行绘制

浏览器解析渲染机制:

 

  • 解析HTML,生成DOM树,解析CSS,生成CSSOM树

  • 将DOM树和CSSOM树结合,生成渲染树(Render Tree)

  • Layout(回流):根据生成的渲染树,进行回流(Layout),得到节点的几何信息(位置,大小)

  • Painting(重绘):根据渲染树以及回流得到的几何信息,得到节点的绝对像素

  • Display:将像素发送给GPU,展示在页面上

当我们对 DOM 的修改引发了 DOM 几何尺寸的变化(比如修改元素的宽、高或隐藏元素等)时,浏览器需要重新计算元素的几何属性,然后再将计算的结果绘制出来,触发回流和重绘

当我们对 DOM 的修改导致了样式的变化(colorbackground-color),却并未影响其几何属性时,浏览器不需重新计算元素的几何属性、直接为该元素绘制新的样式,这里就仅仅触发了重绘

 

回流这一阶段主要是计算节点的位置和几何信息,那么当页面布局和几何信息发生变化的时候,就需要回流,如下面情况:

  • 添加或删除可见的DOM元素
  • 元素的位置发生变化
  • 元素的尺寸发生变化(包括外边距、内边框、边框大小、高度和宽度等)
  • 内容发生变化,比如文本变化或图片被另一个不同尺寸的图片所替代
  • 页面一开始渲染的时候(这避免不了)
  • 浏览器的窗口尺寸变化(因为回流是根据视口的大小来计算元素的位置和大小的)

还有一些容易被忽略的操作:获取一些特定属性的值

offsetTop、offsetLeft、 offsetWidth、offsetHeight、scrollTop、scrollLeft、scrollWidth、scrollHeight、clientTop、clientLeft、clientWidth、clientHeight

这些属性有一个共性,就是需要通过即时计算得到。因此浏览器为了获取这些值,也会进行回流

 

触发回流一定会触发重绘

可以把页面理解为一个黑板,黑板上有一朵画好的小花。现在我们要把这朵从左边移到了右边,那我们要先确定好右边的具体位置,画好形状(回流),再画上它原有的颜色(重绘)

除此之外还有一些其他引起重绘行为:

  • 颜色的修改

  • 文本方向的修改

  • 阴影的修改

 

避免回流的几种方法:

  • 如果想设定元素的样式,通过改变元素的 class 类名 (尽可能在 DOM 树的最里层)
  • 避免设置多项内联样式
  • 应用元素的动画,使用 position 属性的 fixed 值或 absolute 值
  • 避免使用 table 布局,table 中每个元素的大小以及内容的改动,都会导致整个 table 的重新计算
  • 对于那些复杂的动画,对其设置 position: fixed/absolute,尽可能地使元素脱离文档流,从而减少对其他元素的影响
  • 使用css3硬件加速,可以让transformopacityfilters这些动画不会引起回流重绘
  • 避免使用 CSS 的 JavaScript 表达式

标签:浏览器,DOM,元素,几何,回流,重绘
From: https://www.cnblogs.com/ssszjh/p/18097502

相关文章

  • 直播软件app开发,实现用户签到功能助力用户回流
    直播软件app开发,实现用户签到功能助力用户回流需求:实现签到接口,将当前用户当天签到信息保存到Redis中思路:我们可以把年和月作为bitMap的key,然后保存到一个bitMap中,每次签到就到对应的位上把数字从0变成1,只要对应是1,就表明说明这一天已经签到了,反之则没有签到。我们通过......
  • 【DOM】重绘与重排详解及在性能优化中的应用
    DOM树表示页面结构渲染树表示DOM节点如何展示DOM树中需要展示的节点在渲染树中至少存在一个对应的节点(隐藏的DOM元素在渲染树中没有对应的节点)。渲染树中的节点被称为“帧(frames)”或“盒(boxes)”。符合CSS模型的定义。理解页面元素为一个具有内边距、外边距、边框、位置......
  • 一文弄懂浏览器的重排(回流)与重绘
    浏览器渲染过程在浏览器从服务器下载到资源后解析HTML形成DOM树,解析CSS形成CSSOM树。渲染树:将DOM树和CSSOM树结合创建render树。Layout:根据渲染树进行布局,得到节点的几何信息(位置大小)。Painting:布局完成后浏览器根据结果和渲染树,将具体的像素绘制出来。重......
  • 重排和重绘
    重绘与重排的重排:部分渲染树(或者整个渲染树)需要重新分析并且节点尺寸需要重新计算,表现为重新生成布局,重新排列元素重绘:由于节点的几何属性发生改变或者由于样式发生改变,例如改变元素背景色时,屏幕上的部分内容需要更新,表现为某些元素的外观被改变单单改变元素的外观,肯定不......
  • PFA洗瓶尖嘴设计回流快无残留耐腐蚀洗涤瓶
    产品介绍PFA洗瓶也叫特氟龙洗瓶,Teflon洗瓶,进口聚四氟乙烯洗瓶。用于痕量,超痕量分析,同位素检测,ICP-MS/OES/AAS分析等高端实验。常用规格:60ml100ml250ml300ml500ml1000ml等产品特性1、外观半透明;2、耐高底温:使用温度-200~+260℃;3、耐腐蚀:耐强酸、强碱、王水、氢fu酸等有机......
  • 浏览器的回流(重排)和重绘,以及如何优化
    浏览器的回流(重排)和重绘 1、浏览器解析HTML生成DOM树,解析CSS生成CSSDOM树2、如何DOM树和CSSDOM树合并构建渲染树3、然后经过回流(回流主要是计算元素的形状、位置大小)4、然后再经过重绘(重绘就是转化为屏幕上的实际像素,来达到页面展现的目的)  引起回流的动作有: 浏......
  • 【狙击龙虎榜】市场轮动格局有望于近期变盘 关注AI迎来回流的可能
    盘面回顾与展望周五指数震荡走弱,市场情绪同步回落,之前和指数背离的抱团股都明显收到影响。板块方面,出海迎来资金回流,是周五涨停最多的一个方向,并且在AI的加持下开始扩散到游戏、传媒等方向,不过中军龙头股份的走弱是对板块来说比较大的负反馈,所以下周出海方向的分歧不会小,关注活口......
  • [前端] 重排和重绘
    网页的生成过程解析HTML,生成DOM树。解析CSS,生成CSSOM树。结合DOM树和CSSOM树,为每一个节点计算CSS属性,生成渲染树,RenderTree。生成布局(Flow),计算渲染树上所有节点的位置。将布局绘制(Paint)到屏幕上。布局生成和绘制的过程就是渲染。网页生成的时候至少渲染一次。用户交互......
  • AttentionFreeTransformer 核心结构图(GraphViz 重绘)
    AFTFulldigraphAFTFull{ rankdir=BTnode[ style=filled, color=Black fontcolor=White, fillcolor="#30638e", fontname="SimHei", fontsize=32, width=5,height=2, ]inp[label="输入\n[BatchSize,\nSeqLen,......
  • 因为offset和scroll其实都是“相对”来计算的。有其他元素做参照物,所以会回流一次,确保
    以下哪些操作会触发Reflow:varobj=document.getElementById(“test”);Aalert(obj.className)Balert(obj.offsetHeight)Cobj.style.height=“100px”Dobj.style.color=“red”正确答案:BC正确答案:BC。B计算了offsetHeight,C重新设置了高度。A打印出类名,无影响......