重绘和回流(重排)?

一、重绘

    指得是元素外观发生变化,不影响整体html布局,重新把元素绘制的过程

    常见的重绘操作:

    1.改变元素的颜色相关属性;

    2.visiblity,outline等等。。。

二、回流

    指的是元素的位置,大小等变化,变影响了整体html布局,重新排列的过程,也就重排

    常见的操作有:

    1.dom的增删操作;

    2.元素的位置改变,大小改变,margin,padding,border等;

    3.元素的字号font-size等属性改变;

    4.浏览器窗口的改变会触发resize事件;

    5.激活css伪类,:hover属性等等;

    6.查询一些属性也会导致,

  • offsetTop、offsetLeft、 offsetWidth、offsetHeight、
  • scrollTop、scrollLeft、scrollWidth、scrollHeight、
  • clientTop、clientLeft、clientWidth、clientHeight;
  • scrollIntoView()scrollIntoViewIfNeeded()
  • getComputedStyle()
  • getBoundingClientRect()
  • scrollTo()

建议:

重排的代价比较高,如果浏览器性能不好可能会导致用户体验极差,重绘不一定会导致性能,这就是应用第三方框架react,vue为什么会提升系统的性能,

因为框架渲染的是虚拟的dom,但是虚拟的dom不会真正进行重排重绘等操作,我们在代码书写中一定要减少这些影响性能的操作;

posted @ 2020-08-12 09:43  程序員劝退师  阅读(419)  评论(0编辑  收藏  举报