Appearance
隐藏元素
html
<!-- 占用空间 -->
<div class="box" style="opacity: 0"></div>
<!-- 不占用空间, 需要注意的是: overflow会形成 BFC -->
<div class="box" style="height: 0; width: 0; overflow: hidden">sdfadsfasdfi</div>
<div class="box" style="margin-left: -100%"></div>
<div class="box" style="display: none"></div>
<!-- trasn -->
<div class="box" style="transform: scale(0)"></div>
<div class="box" style="filter: opacity(0)"></div>
display:none; visbile:hidden; opactiy:0
的区别
display: none;
- DOM 结构:浏览器不会渲染 display 属性为 none 的元素,不占据空间;
- 事件监听:无法进行 DOM 事件监听;
- 性能:动态改变此属性时会引起重排,性能较差;
- 继承:不会被子元素继承,毕竟子类也不会被渲染;
- transition:transition 不支持 display。
visibility: hidden;
- DOM 结构:元素被隐藏,但是会被渲染不会消失,占据空间;
- 事件监听:无法进行 DOM 事件监听;
- 性 能:动态改变此属性时会引起重绘,性能较高;
- 继 承:会被子元素继承,子元素可以通过设置 visibility: visible; 来取消隐藏;
- transition:transition 不支持 display。
opacity: 0;
- DOM 结构:透明度为 100%,元素隐藏,占据空间;
- 事件监听:可以进行 DOM 事件监听;
- 性 能:提升为合成层,不会触发重绘,性能较高;
- 继 承:会被子元素继承,且,子元素并不能通过 opacity: 1 来取消隐藏;
- transition:transition 不支持 opacity。