哪些操作可以触发浏览器的重排(Reflow)

阅读数:69 评论数:0

跳转到新版页面

分类

html/css/js

正文

浏览器的重排(Reflow)是指浏览器重新计算页面元素的位置和尺寸的过程。重排是一个计算密集型的过程,因为它需要更新渲染树,并且可能导致整个页面或页面的一部分重新绘制。触发重排的操作通常包括:

  • 添加或删除可见的DOM元素: 当你向页面添加或从页面移除元素时,浏览器需要重新计算页面布局。

  • 元素位置或尺寸的变化: 如果你改变了元素的宽度、高度、边距、填充或边框等属性,这会触发重排。

  • 内容变化: 如果一个元素的内容发生变化,尤其是输入框中的文字变化,可能会导致周围元素的位置调整。

  • 页面渲染初始化: 当页面初次渲染时,会发生重排。

  • CSS样式的变化: 修改元素的样式,尤其是布局相关的样式,会触发重排。

  • 计算或获取某些属性: 访问某些属性或方法时,浏览器需要提供最新的计算值,如 offsetWidth, offsetHeight, scrollTop, scrollLeft, clientTop, clientLeft, getComputedStyle(), 以及 getBoundingClientRect() 等。

  • 窗口或框架尺寸变化: 调整浏览器窗口的大小,或者修改<iframe>的尺寸也会触发重排。

  • 激活CSS伪类::hover(通过用户与页面交互时激活)。

  • 设置style属性的值: 直接通过style属性修改样式也会触发重排。

 

dom.style.height = "auto"; // 将元素的高度设置为自动,即元素的自然高度
const { height } = dom.getBoundingClientRect(); // 获取元素当前的自然高度
dom.style.height = 0; // 将元素的高度设置为0,这将导致元素的高度变化
dom.getBoundingClientRect(); // 触发浏览器的重排(reflow)以确保过渡能够执行
dom.style.height = height + 'px'; // 将元素的高度设置为之前获取的自然高度



相关推荐

一、概述 overflow属性用于当一个元素太大而无法适应父级窗口的大小时行为。具体又可以分为: overflow-x 属性规定是否对内容的左/右边缘进行裁剪 - 如果溢出元素内容区域的话。 over

一、概述 background是css简写属性,可有一个或多个值,且可以按任意顺序放置: background: <bg-color> <bg-image> <position/bg-size>

前提是定义了background-image属性,然后用background-attachment

局部作用域 css的规则都是全局的,任何一个组件的样式规则,都对整个页面有效。产生局部作用域的唯一方法,就是使用一个独一无二的class的名字,不会与其他选择器重名,但是当我们

less作为css的一种形式的扩展,它并没有阉割CSS的功能,而是在现有的CSS语法 上,添加了很多额外的功能。 变量 在less中利用@符号进行变量的定义</p

css预处理器是一种语言用来为css增加一些编程的特性,无需考虑浏览器的兼容性问题,最为普遍的三款

module.exports = { "plugins": { "postcss-import": {},

Less是一个CSS的超集,Less允许我们定义变量,使用嵌套式声明,定义函数等。严格说Less包含两部分:(1)Less的语法 (2)Less预处理器。浏览器终究只认识CSS,所以Less文件

最近自己做了一个网站,使用了cdn加速bootstrap和jquery的加载。这里先解释一下什么是cdn。 c

一、概述 CSS3中新增的一个函数,calculate(计算)的缩写。用于动态计算宽/高,你可以使用calc()给元素的各个属性设置值【margin、border、padding、font-size】