css display:none和visibility:hidden的区别

共同点:都是页面隐藏元素的方法

区别

1.display: none:在页面上不占用位置,visibility:hidden:占用位置

2.这两个属性都会产生重绘,但是display:none这个属性还会产生一次回流

原理:

浏览器的渲染机制,每一个浏览器的渲染机制有可能都是不同的,但是共同点是有的,当我们在页面上输入一个URL的时候,浏览器会向服务器(本地)发送一个网络请求,我可以打开控制台去找Performance-Event Lop-Send Request,这个Send Request就是发送请求

拿到返回的内容之后,进行HTML解析,主要解析js,dom,css三个部分

浏览器如何解析dom,css?

分别解析dom树和css树,然后将两者合并成为Render tree

然后将合并好的Render tree进行布局(定位,确定元素在页面上的位置),绘制(通过计算机的显卡将Render tree显示在页面上),合并()

然后再回过头来看display: none:在页面上不占用位置的原因,虽然dom解析器将元素进行了解析,但是css解析器也将该元素的css属性进行了解析,没有将该元素合并进Render tree。

这样就引出了重绘和回流的问题

这两个属性都会产生重绘,但是display:none这个属性还会产生一次回流,产生回流一定会产生重绘!!

产生回流的情况:改变元素的位置(left,top...),显示隐藏元素

产生重绘的情况:样式改变,字体大小等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值