1.隐藏元素后是否占据空间
display:none
不占据空间
visibility:hidden
占据空间
2.是否产生回流
display:none
产生回流
visibility:hidden
不产生回流
3.是否有继承
visibility
具有继承性,给父元素设置visibility:hidden;子元素也会继承这个属性。但是如果重新给子元素设置visibility: visible,则子元素又会显示出来。这个和display: none有着质的区别
示例:
<style>
.dis{
display: none;
}
.vis{
visibility: hidden;
}
</style>
<div class="dis">
<ul>
<li>dis元素1</li>
<li style="display: block;">dis元素2</li>
<li>dis元素3</li>
</ul>
</div>
<div class="vis">
<ul>
<li>vis元素1</li>
<li style="visibility: visible;">vis元素2</li>
<li>vis元素3</li>
</ul>
</div>
效果:
vis元素2
4.是否影响计数器
visibility: hidden
不会影响计数器的计数,visibility: hidden
虽然让一个元素不见了,但是其计数器仍在运行。这和display: none
完全不一样
<div>
<strong>给元素设置visibility:hidden样式</strong>
<ol>
<li>元素1</li>
<li style="visibility:hidden;">元素2</li>
<li>元素3</li>
<li>元素4</li>
</ol>
</div>
<div>
<strong>给元素设置display:none样式</strong>
<ol>
<li>元素1</li>
<li style="display:none;">元素2</li>
<li>元素3</li>
<li>元素4</li>
</ol>
</div>
效果:
给元素设置visibility:hidden样式
1.元素1
3.元素3
4.元素4
给元素设置display:none样式
1.元素1
2.元素3
3.元素4
参考文章:原文…