博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
为什么要用visibility:hidden;代替display:none;?
阅读量:6001 次
发布时间:2019-06-20

本文共 880 字,大约阅读时间需要 2 分钟。

为什么要用用visibility:hidden;代替display:none;?因为后者更加消耗浏览器:

css绘制画面有两种形式:repaint 和reflow,当我们更改css属相如background时,浏览器只需repaint就行,dom节点的大小、位置均未发生改变,我理解为:原地不动只是换个颜色填充而已。这时的开销就小。

当我们操作dom节点要改变其大小和位置时,对浏览器来说就比较麻烦了,必须要进行reflow,重新定位,重新布局,只不过对于现在的电脑硬件和高版本浏览器来说这倒不是显而易见的性能问题,但作为开发人员,核心的价值和最大的满足感就是节省了内存,优化了效率。

SO,这也是本文标题的原因。visibility:hidden;对浏览器来说只需一次repaint就OK。但display:none;浏览器要进行reflow,也就是要销毁原先绘制的frame,然后还要再次重绘frame,浪费,不环保。

好,说了这么多,那么问题来了,挖掘机。。。。不!怎样才能减少浏览器开销呢?

那就要尽量改动让浏览器用repaint就能完成的属性,少改动那些要做大手术的属性。实不相瞒,对dom节点的增删改都是大手术。尤其是动画,当初年少无知,为了追求刺激,总搞一些没啥用途的大而空的乱串特效,想必浏览器也挺辛苦吧。还有少用表格,表格总是牵一发而动全身,开销更大。

以后可以这么干:对要多次修改的dom元素,尽量一步到位,我用的是先设置一个空的class如.XX{aa:num; bb:num; cc:num},然后用js直接更改其dom的classname属性为XX即可。此外,优化的方法从各个方面各个角度,还有很多很多,写这篇博客时的我目前还处于菜鸟阶段,关于优化问题总结的很多很杂,具体说不出个123来,这个知识点对我的意义就是:别拿浏览器不当干部,要尽可能的让她干的轻松(没错,是“她”),为此以后要养成时刻优化代码的习惯,不以善小而不为。

转载于:https://www.cnblogs.com/chayangge/p/4288707.html

你可能感兴趣的文章
黑夜的精神力量
查看>>
Spring hibernate 事务的流程
查看>>
有关office 2010办公软件安装不上的问题解答
查看>>
centos7中php使用memcache
查看>>
亮剑:PHP,我的未来不是梦(7)
查看>>
Linux系统上传下载工具rz/sz
查看>>
matplotlib绑定到PyQt5(有菜单)
查看>>
利用Powershell和ceye.io实现Windows账户密码回传
查看>>
如何清理EBS R12 middle-tier cache
查看>>
Windows Azure HandBook (4) 分析Windows Azure如何处理Session
查看>>
25个Java机器学习工具和库
查看>>
对Windows Server容器的数据保护改进了吗?
查看>>
Kafka、RabbitMQ、RocketMQ 消息中间件的对比 | 消息发送性能篇
查看>>
业绩很美好的Facebook,如何让两款通讯工具变现?
查看>>
苹果企业账号遭滥用:iOS漏洞"留出"赌博应用通道
查看>>
越快越好 Linux用户需要赶紧补上glibc漏洞
查看>>
智能联接时代 黑客侵入汽车系统更轻松了
查看>>
《深入理解C++11:C++ 11新特性解析与应用》——2.3 扩展的整型
查看>>
《HTML5 Canvas游戏开发实战》——第3章 Canvas高级功能
查看>>
黑客很伤心,美国 NSA 泄露的黑客工具“无人问津”
查看>>