当前位置:网站首页 > 后端性能优化 > 正文

重绘和回流(重绘和回流如何优化)



一、写在前面 页面优化在面试的过程中经常遇到的问题,今天就来总计一下重绘和回流的问题。 二、重绘和回流是什么 我们都知道一个页面从加载到完成,首先是构建DOM树,然后根据DOM节点进行几何布局形成render树(渲染树),当渲染树构建完成后,页面就根据DOM树开始布局,渲染树也根据设置的样式渲染这些节点。 在这一过程中,比如我们删除DOM节点,修改一个元素的宽高,页面布局发生变化,DOM树也发生变化,那么肯定要重新构建DOm树,而DOM树和渲染树紧密相连,DOM树渲染完了,渲染树也会随之进行渲染,这个过程就称为。 在比如说,我们给一个元素修改颜色,这样的行为是不会影响页面的布局的,DOM树不会发生改变,但是颜色变了,渲染树得重新绘制,这就是。 由于的元素不在页面渲染,渲染树的构建不包含这些节点。但是为的元素会在渲染树中。因为为会脱离文档流,visibility为hidden虽然看不到,但类似与透明度为0,其实还在文档流中,还是有渲染的过程。 尽量避免使用表格布局,当我们不给表格的设置固定的宽度的时,一列的td的宽度会以最宽的td的宽作为渲染的标准,假设前几行的td在渲染时都渲染好了,结果下面的某行特别宽,table为了统一宽度,前几行的td会回流重新计算宽度,这是一个比较耗时的操作三、怎么样减少回流 回流会重构DOM树,渲染树也得重新渲染,比较麻烦,哪些行为可以引发回流,如何去避免呢? 比如删除某个节点,或者给父元素插入子节点,这类操作都会触发回流。如果我们插入多个子节点的话,可以使用。 比如说元素的宽度变了,border变了,字体大小变了,这种直接会引发页面的布局的改变,也会触发回流。如果我们需要改变多个属性,做好的是将这些改变定义在一个class中,直接修改class名,这样只会触发一次回流。 修改一个元素的左右margin,padding之类的操作,所以在元素位移的动画,不要更改margin之类的值,使用定位脱离文档流后进行改变位置。 例如我们需要获取scrollTop、scrollLeft、scrollWidth、offsetTop、offsetLeft、offsetWidth、offsetHeight之类的属性的时候,浏览器为了保证值的正确性也会回流进行获取,所以如果你要不多次操作,最好取完进行缓存。 页面的初次渲染触发回流这样无法避免。 事件的发生也会触发回流。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/219131.html原文链接:https://javaforall.cn

到此这篇重绘和回流(重绘和回流如何优化)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • rbo优化器(优化器rmsprop)2026-02-26 09:27:10
  • cpu性能对比软件(cpu对比平台网站)2026-02-26 09:27:10
  • webflux太难用了(webflux性能提高多少)2026-02-26 09:27:10
  • webflux 性能(webflux性能调优)2026-02-26 09:27:10
  • 苹果电脑装双系统对电脑有损害吗知乎(苹果电脑装双系统影响性能吗)2026-02-26 09:27:10
  • bytebuffer(Bytebuffer 性能)2026-02-26 09:27:10
  • 优化器optimizer(优化器optimizer代码)2026-02-26 09:27:10
  • 重绘和回流如何优化(dom重绘和回流)2026-02-26 09:27:10
  • 若依文档(若依文档什么 技术写的,能否优化比较好的seo)2026-02-26 09:27:10
  • 重绘和回流的区别(重绘和回流的优化)2026-02-26 09:27:10
  • 全屏图片