更改容器元素中的属性是否总是会导致重绘或回流?
Does changing attributes in a container element always cause repaints or reflows?
通过JavaScript更改主容器元素中的信息属性(如数据属性(甚至是CSS类))是否会影响性能,即使没有相关的CSS?(DOM的表示没有相关的更改。)例如,将相同的属性更改降级到隐藏的输入代理中会更好吗?
在这篇文章中,一个答案表明所有DOM突变都会导致重绘或回流。这篇文章表明,它们更有选择性地发生。属性可以在CSS选择器中定位,所以我的猜测是,当浏览器评估重绘或回流的可能性时,必须有一些固有的成本,但我不清楚这个成本有多重要。
我刚刚在Chrome 52中测试了Paint flashing
选项在开发人员工具中启用。
当改变一个DOM元素的属性,而这个属性与它的样式无关时,我没有看到油漆闪烁。既不使用自定义属性,如data-test="123"
,也不使用class="non-existing-class"
。
我认为你也应该在其他浏览器上测试一下,但如果你需要设置属性,我不认为这是一个问题。
相关文章:
- javascript数组元素是否知道其封闭数组
- 如何检查元素是否在iframe中
- 检查元素是否将状态从隐藏更改为可见
- 确定元素是否存在
- 消隐数组元素是否生成自己的属性
- 检查一个元素是否有一个类与另一个类总是返回true
- 如何检查日期选择器和时间选择器元素是否使用JQuery/Javascript设置
- 如何查找具有该ID的元素是否存在
- 检查元素是否已单击或hasClass
- 使用webdriver和selenium验证元素是否不存在
- 如何使用jQuery实时检查元素是否为空
- html元素是否具有内置的属性
- 检查元素是否有内容
- 使用 javascript 检查元素是否包含子标记而不是文本
- JavaScript 在 JSON 对象中移动如何判断元素是否存在
- 检查两个或多个 DOM 元素是否重叠
- 谷歌地球插件 — 如何检查带有 ID 的元素是否已经存在
- 检查元素是否悬停在上面
- DOM 元素是否可以具有其值为任意对象(而不是字符串)的属性
- 如何检查DOM元素是否已完全加载