博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CSS的隐藏方式
阅读量:6759 次
发布时间:2019-06-26

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

display:none和visibility:hidden的区别

// 1、空间占据display:none;// 隐藏的元素不占文档流visibility:hidden;// 隐藏的元素空间存在(占茅坑、不拉屎)// 2、回流和重绘(reflow/repaint)display:none;// 引发回流和重绘visibility:hidden;// 无回流和重绘// 3、株连九族display:none;// 其内的标签元素全部隐藏、无论如何挣扎都无济于事visibility:hidden;// 其元素若添加visibility:visible;则会显示出来

height:0;overflow:hidden;

overflow:hidden;// 溢出隐藏//若父级被添加了position属性、子级内添加了绝对定位、则不会被隐藏//火星人在地球触发了法律,如果火星人的老爸在这法律之外,则这个火星人啥事没有;否则,坐牢!
position:absolute;top:-999em;// 不占空间、无法点击position:relative;top:-999em;// 占空间、无法点击position:absolute;visibility:hidden;// 不占空间、无法点击opacity:0;filter:Alpha(opacity=0);// 占空间、可以点击

那些原因引起浏览器的回流

  1. 改变字体大小

  2. 样式表改动

  3. DOM操作

  4. CSS伪类

  5. 元素内容变化、尤其是输入控件

  6. 调整窗口大小( resize )

  7. width、clientWidth(内容可视区大小)、offsetWidth(border+clientWidth)、scrollTop/scrollHeight(元素内容高度/包括溢出内容)

会使浏览器将渐进回流队列Flush、立即执行回流

如何减少页面回流

  • 避免逐项更改样式、最好一次性更改style属性cssText、或者定义class一次性添加className

  • 避免循环操作DOM、创建一个documentFragmentdiv在上面应用所有DOM操作、最后在添加到指定的元素中

也可以在一个display:none;的元素上进行操作、因为display:none;上的DOM操作不会引发回流(reflow)和重绘(repaints)

  • 避免循环读取offsetLeft等属性、在循环之前把他们存储起来

  • 进行复杂动画的元素运动时、使用绝对定位、使其脱离文档流。

    否则会引起父元素以及后续元素大量的回流

转载地址:http://prbeo.baihongyu.com/

你可能感兴趣的文章
怎样给一个Vue页面添加大纲导航
查看>>
ElementUI的Table组件中的renderHeader方法研究
查看>>
Apache Rewrite
查看>>
深入K8S Job(一):介绍
查看>>
generic netlink 编程快速入门
查看>>
JavaScript 编码规范
查看>>
H5页面二次分享
查看>>
PTPD2源码解析之:packet的接收和发送
查看>>
SLB访问日志分析:基于客户端来源和HTTP状态码的实践
查看>>
javascript appendChild()的完整功能
查看>>
小程序实现长按录音,上划取消发送
查看>>
php实现共享内存进程通信函数之_shm
查看>>
Java多线程基础(一)——线程与锁
查看>>
01 【零基础入门】html学习笔记(1)
查看>>
没有对象?new一个!
查看>>
实战PHP数据结构基础之双链表
查看>>
性感慕课-在线被爬
查看>>
【跃迁之路】【437天】刻意练习系列196—Java基础练习(线程)(2018.04.18)
查看>>
es6学习
查看>>
Python每日一练0012
查看>>