JavaScript中回流(重排)与重绘的相关知识介绍(代码示例)


当前第2页 返回上一页

添加或者删除可见的DOM元素;
元素位置改变;
元素尺寸改变――边距、填充、边框、宽度和高度;
内容变化,比如用户在input框中输入文字,文本或者图片大小改变而引起的计算值宽度和高度改变;
页面渲染初始化;
浏览器窗口尺寸改变,resize事件发生时;
计算offsetWidth和offsetHeight属性;
设置style属性的值;

回流必将引起重绘,而重绘不一定会引起回流。

如何减少回流、重绘?

一、 CSS中避免回流、重绘

1.尽可能在DOM树的最末端改变class
2.避免设置多层内联样式
3.动画效果应用到position属性为absolute或fixed的元素上
4.避免使用table布局
5.使用css3硬件加速,可以让transform、opacity、filters等动画效果不会引起回流重绘

二、 JS操作避免回流、重绘

1.避免使用JS一个样式修改完接着改下一个样式,最好一次性更改CSS样式,或者将样式列表定义为class的名称
2.避免频繁操作DOM,使用文档片段创建一个子树,然后再拷贝到文档中
3.先隐藏元素,进行修改后再显示该元素,因为display:none上的DOM操作不会引发回流和重绘
4.避免循环读取offsetLeft等属性,在循环之前把它们存起来
5.对于复杂动画效果,使用绝对定位让其脱离文档流,否则会引起父元素及后续元素大量的回流

总结:

回流在浏览器中属于一种用户主导的操作,所以知道如何去改进回流时间以及知道各种文档属性(DOM节点深度,css的渲染效率,各种各样的样式改变)对回流时间的影响对于前端开发来讲是很有帮助的。有时即便是回流一个单一的元素,也可能要求它的父元素以及任何跟随它的元素也产生回流。例如需要改变某个元素的背景,这就不涉及该元素的属性,所以只发生重绘。

以上就是JavaScript中回流(重排)与重绘的相关知识介绍(代码示例)的详细内容,更多文章请关注木庄网络博客

返回前面的内容

相关阅读 >>

javascript生成一次性密码(otp)

javascript怎么进行全局错误处理

你需要知道的关于javascript计时器的所有内容

javascript中dom常用方法有哪些?

angularjs的内存溢出怎么处理

详解es6中的for … of循环和可迭代对象

javascript作用域和作用域链的解析(附示例)

了解js中的执行上下文、 执行栈、事件循环

javascript如何使网页跳转

值得收藏的20个前端开发icon图标库

更多相关阅读请进入《javascript》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...