jquery为我们提供了强大的dom操作方法,其中css()方法可以用来设置元素的样式,那么你有考虑过css方法会造成什么性能问题吗?一起来看看吧。
jq设置css会影响性能吗?
jquery设置元素的css样式时,部分css样式改变不会影响性能,如transforms 和 opacity。有些css样式的改变会影响性能,如width、height、修改节点的位置、删除节点等。
这是由浏览器的渲染机制导致的。dom结构的改变会导致浏览器重排和重绘。
重排是指元素的位置或者大小发生了改变,浏览器需要重新去计算渲染树,新的渲染树建立之后,浏览器会重来源gao($daima.com搞@代@#码网新绘制所影响的元素。
重绘是指元素的样式发生了变化,而大小和尺寸没有发生改变。
(相关课程推荐:jQuery教程)
什么情况下会触发重排?
1)页面渲染初始化时;(这个无法避免)
2)浏览器窗口改变尺寸;
3)元素尺寸改变时;
4)元素位置改变时;
5)元素内容改变时;
6)添加或删除可见的DOM 元素时。
使用jquery的css方法前,可以试试下面的优化方法,减少性能损失:
1)将多次改变样式属性的操作合并成一次操作,减少DOM访问。
2)如果要批量添加DOM,可以先让元素脱离文档流,操作完后再带入文档流,这样只会触发一次重排。(fragment元素的应用)
3)将需要多次重排的元素,position属性设为absolute或fixed,这样此元素就脱离了文档流,它的变化不会影响到其他元素。例如有动画效果的元素就最好设置为绝对定位。
4)由于display属性为none的元素不在渲染树中,对隐藏的元素操作不会引发其他元素的重排。如果要对一个元素进行复杂的操作时,可以先隐藏它,操作完成后再显示。这样只在隐藏和显示时触发两次重排。
5)在内存中多次操作节点,完成后再添加到文档中去。例如要异步获取表格数据,渲染到页面。可以先取得数据后在内存中构建整个表格的html片段,再一次性添加到文档中去,而不是循环添加每一行。
本文来自jQuery答疑栏目,欢迎学习!
以上就是jq设置css会影响性能吗?的详细内容,更多请关注gaodaima搞代码网其它相关文章!