相同:三者都能使元素隐藏。
区别:
overflow: hidden;
溢出隐藏。这个说是隐藏,倒不如说是裁剪,把超出显示的区域裁剪掉,与clip
类似。
visibility: hidden;
隐藏可见性。这个是把元素隐藏掉,相当于100%透明,不可见,但是还是占位置,占空间。(相当于哈利波特披上隐形斗篷,他还能碰到物体)display: none;
不显示。这个隐藏看不见也不占空间。
- 元素先
visibility: hidden;
隐藏,再通过visibility: visible;
显示出来,这个方法占空间的,无论在隐藏时还是被显示时。 - 元素先
display: none;
隐藏,再通过display: block;
显示出来,这个方法不占空间,无论在隐藏时还是被显示时。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
body, p {
padding: 0;
margin: 0;
}
.container {
min-width: 100%;
min-height: 100%;
background: #fcc;
position: absolute;
}
.wrap {
width: 500px;
height: 300px;
margin: 0 auto;
}
.wrap p {
color: blue;
font-size: 20px;
font-weight: bold;
}
.wrap .child {
width: 200px;
height: 200px;
}
.wrap .add-visibility {
background: red;
}
.wrap .add-display {
background: yellow;
}
</style>
</head>
<body>
<div class="container">
<div class="wrap">
<p>visibility隐藏显示测试,测试元素为红色</p>
<div class="child add-visibility">这是测试部分</div>
<div class="child-brother">这是兄弟元素,检测是否占位</div>
</div>
<div class="wrap">
<p>display隐藏显示测试,测试元素为黄色</p>
<div class="child add-display">这是测试部分</div>
<div class="child-brother">这是兄弟元素,检测是否占位</div>
</div>
</div>
</body>
</html>