回顾一下重绘,回流

132 阅读2分钟

先回顾一下那些常见的重绘元素

  • color 颜色

  • border-style 边框样式

  • visibility 可见

  • background 背景

  • text-decoration 文本属性

  • background-image 背景图片

  • background-position 背景位置

  • background-repeat 背景平铺

  • outline-color 边框颜色

  • outline 外边轮廓

  • outline-style 外边框样式

  • border-radius 边框圆角

  • outline-width 轮廓宽度

  • box-shadow 盒子阴影

  • background-size 边框大小

先回顾一下那些常见的回流元素

  • width

  • height

  • padding 内边距

  • margin 外边距

  • display 显示

  • border-width 外边框宽

  • border 外边框

  • top 上面

  • position 位置

  • font-size 文字大小

  • float 浮动

  • text-align 文本水平对齐 等等等....

什么是重绘

重绘:当元素的一部分属性发生变化,如外观背景颜色等不会引起布局变化,只需要浏览器根据元素的新属性重新绘制,使元素呈现新的外观叫做重绘

什么是回流

回流:当渲染树中的一部分或者全部因为大小边距等问题发生改变而需要dom树重新计算的过程

注意点

重绘不一定需要回流(如颜色的改变),回流必然导致重绘(如改变网页位置)

解决方法

  • 需要对元素进行复杂的操作是可以先隐藏,等操作完在显示出来

  • 需要创建多个dom节点时可以使用DocumentFragment创建后一次性加入document缓存layout属性,如var left=elem.offsetLeft这样多次使用left只会产生一次回流

  • 尽量避免用table布局(table元素一旦触发回流就会导致table里面所有的其他元素回流)

  • 避免使用css表达式(expression),因为每次回调都会重新计算值(包括加载页面)

  • 尽量使用css属性简写,如用border代替border-width,border-style,border-color

  • 批量修改元素样式:elem.className和elem.style.cssText代替elem.style.xxx

成功,这是至高无尚;振奋与喜悦;勤劳与汗水的代名词,有多少人为它而不断奋斗,有多少人为它而不断成长,人只要努力就会成功!