什么是重绘和回流?display:none和visibility:hidden的区别

本文介绍了重绘和回流的概念,重绘是指元素外观改变而不影响布局的操作,如背景颜色变化。回流则是指元素尺寸、布局变化导致的渲染树重建,成本高于重绘。DOM操作、浏览器窗口尺寸变化等都可能触发回流。回流必然伴随重绘,但反之不成立。避免回流和重绘的方法包括浏览器自身的渲染队列优化、批量修改DOM等。此外,display:none与visibility:hidden的区别在于:display:none不占用文档流并触发回流和重绘,而visibility:hidden占用文档流仅触发重绘。
摘要由CSDN通过智能技术生成

什么是重绘和回流?

1、什么是重绘?

重绘: 当渲染树中的一些元素需要更新属性,而这些属性只是影响元素的外观、风格,而不会影响布局的操作,比如 background-color,我们将这样的操作称为重绘。

2、什么是回流?

回流:当渲染树中的一部分(或全部)因为元素的规模尺寸、布局、隐藏等改变而需要重新构建的操作,会影响到布局的操作,这样的操作我们称为回流

引起回流的因素:

任何会改变元素几何信息(元素的位置和尺寸大小)的操作,都会触发回流。

  • DOM节点增加、删除
  • DOM节点位置变化
  • 元素的尺寸、边距、填充(文字、图片)、边框、宽高
  • DOM节点display显示与否,不包含visibility
  • 页面渲染初始化(第一次加载页面)
  • 浏览器窗口尺寸变化(resize)
  • 向浏览器请求某些样式信息(offset、scroll、client、width/height、getComputedStyle、currentStyle)
    除开以上几个因素以外只会引起重绘。

dom操作之所以消耗性能,就是因为容易引起回流,所以在做dom操作优化的时候就是以减少回流次数为依据来进行优化的,之所以需要缓存、文档碎片就是为了减少回流次数。

 <div class="box">我是一个孤独的盒子</div>
   <sc
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值