访问布局信息是否也会导致浏览器重排
Can accessing layout information also cause browser reflows?
我知道设置样式属性会导致浏览器重排。访问布局属性时是否也可能发生浏览器重排。如果是,您能否举一个具体的例子,为什么会导致浏览器回流?
当然,这取决于实现,但通常,如果浏览器认为需要重新查询布局数据(即此元素上的某些与布局相关的属性或任何父元素已更改(,则浏览器会在读取元素的属性时触发重排。
您可以在此处找到 WebKit 受影响的属性列表:如何(不(在 WebKit 中触发布局。带有示例的更一般的文章:渲染:重绘、重排/重新布局、重新样式
获取属性可能会(见下文(,但更改属性会。设置与属性相关的样式,例如ele.width
。位置属性(如 iframe 或 img 标记的src
(将。
另请注意,附加事件侦听器(on*=...
、addEventListener(*,...)
等(会导致重排。这是由于事件捕获从最外层的父元素到 src 元素的方式,并通过父元素链从 src 元素冒泡出来。
此外,现代浏览器(例如 chrome(会延迟更新 GUI,除非查看指定的页面。当页面再次变为活动状态时,这会导致重排,因为浏览器确保它正确显示页面。这种延迟/队列可以使获取属性看起来好像它们导致了重排,而实际上,浏览器确保它正确显示
如果您不更改 CSS 属性,而只是访问它,则不需要,不需要重新呈现页面。
这已经很晚了,如果你阅读其他人已经发布的链接,它就会以一种你可以找到的方式回答,但它值得在这里明确说明:
浏览器的任务是为您提供当前值,因此作为一般规则,它将重排和重新绘制,以确保您拥有的是现在的值。 我发现这样想会有所帮助 - 任何时候您要求页面上任何元素的位置或大小时,您都可以假设您将导致重排/重绘。不,它不是 100% 总是正确的,但它足够接近 100%,你应该假设如果你要求顶部、左侧、底部、右侧、高度、宽度或任何影响这些测量值的东西(如比例、旋转等(,你会导致 R/R。这是我能给你的具体答案。
同样,这并非在任何时候都是100%正确的,但我发现如果你这样想,它会在98%的情况下有所帮助,并且不会像对98%的人那样伤害另外2%。
- 访问布局信息是否也会导致浏览器重排
- 使用agility.js进行页面布局和合成
- 内部分区字体大小获胜'调整浏览器窗口大小时不会随媒体查询而更改
- 如何使用phaser使html5游戏在移动设备浏览器上运行
- 有时数据是't显示在浏览器中
- 使图像在单击时展开到不大于浏览器
- fetch() 函数未在 Ubuntu Chromium 浏览器上定义
- 不同浏览器中的空白字符正则表达式行为
- 在Windows 10中自动执行例行程序(主要与浏览器交互)
- 如何在 D3 中使力布局图.js响应屏幕/浏览器大小
- 侦听浏览器 Ctrl+F/查找布局修改
- JavaScript 显示隐藏函数布局问题火狐浏览器
- Zurb Foundation 4和同位素布局问题(某些浏览器)
- 更改谷歌浏览器警报框的布局
- 任何关于响应网格的建议,该网格将适应不同浏览器的文本大小和布局
- 浏览器兼容性问题,而不是明显的布局/CSS问题
- 计算浏览器文本布局
- 我可以使用javascript强制浏览器“刷新”吗?任何挂起的布局更改
- 如何检测浏览器何时完成了视图更新(重新布局,应用任何更改的CSS)
- d3 强制布局和火狐浏览器