相同点
都可以使得相应的元素消失(其实在整个dom树中,相对应的元素并没有真正的消失)
都可以通过动态控制来使得元素恢复
不同点
visibility:hidden 的元素会占据相应的空间位置,而display:none 不会。
实例
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>Document</title>
<style>
body {
width: 100%;
height: 100%;
}
div {
width: 100px;
height: 50px;
margin: 0 auto;
}
</style>
<script>
setInterval(() => {
document.querySelector('div').style.display='block'
document.querySelectorAll('div')[1].style.visibility='visible'
}, 3000);
</script>
</head>
<body>
<div class="div1" style="background-color: aqua;display: none;"></div>
<div class="div2" style="background-color: pink;visibility: hidden;"></div>
<div class="div3" style="background-color: red;"></div>
</body>
</html>
在开始时,只有div3显示出来了,但是上面还有一个div2的空间,虽然div2消失。
div1是没有占据任何空间
上面三个div其实都是存在于dom树结构中的,并没有消失。可以通过控制元素样式来再次让其显示。
最后, 三个div又全部都显示出来了。