visibility:hidden 和 display:none 有什么区别?

cssweb developmentfront end technology更新于 2024/4/30 9:16:17

在 CSS 中,"visibility"和"display"属性用于显示和隐藏 HTML 元素。它们可以有不同的值,我们将在下文中学习。

在本教程中,我们将了解 CSS 属性"visibility:hidden"和"display:none"之间的区别。

什么是 CSS 属性"visibility"?

在 CSS 中,"visibility"属性用于控制 HTML 元素的可见性。通常,它可以有两个值:一个是"hidden",另一个是"visible"。

当我们将"visibility"的值设置为"visible"时,它会在网页上显示 HTML 元素;当我们将 HTML 元素的值设置为"hidden"时,它会隐藏 HTML 元素,但会占用网页上的空间。这意味着它不会从网页中删除 HTML 元素,而是隐藏 HTML 元素。

语法

用户可以按照以下语法使用 CSS 的"visibility"属性。

visibility: visible | hidden

在上述语法中,"visibility"CSS 属性可采用"visible"或"hidden"值。

示例

在下面的示例中,我们有一个包含三个子 div 元素的"container"元素。我们为第一个和第三个 div 元素设置了"visibility: visible"。此外,我们还为第二个 div 元素设置了"visibility: hidden"。

在输出中,用户可以观察到第二个 div 元素不可见,但在网页上占用了空间。

<html>
<head>
   <style>
      .container {
         height: 100px;
         width: 500px;
         background-color: blue;
         padding: 10px;
         display: flex;
         justify-content: space-around;
         border-radius: 12px;
         font-size: 1.2rem;
      }
      .first,
      .second,
      .third {
         height: 100px;
         width: 100px;
         background-color: red;
         border-radius: 12px;
         display: flex;
         justify-content: center;
         align-items: center;
         color: white;
      }
      .first, .third { visibility: visible;}
      .second {visibility: hidden;}
   </style>
</head>
<body>
   <h2>Using the <i> visibility: hidden </i> CSS property to hide the HTML element</h2>
   <div class = "container">
      <div class = "first"> visibility: visible </div>
      <div class = "second"> visibility: hidden </div>
      <div class = "third"> visibility: visible </div>
   </div>
</body>
</html>

示例

"opacity: 0"与"visibility: hidden"非常相似,因为它也会隐藏HTML元素,但会占用网页空间。

在下面的示例中,div元素包含两个部分。当用户点击第一个部分时,其不透明度变为零。当用户点击第二个部分时,其可见性变为"hidden"。两者都会隐藏HTML元素,但会占用网页空间。

然而,主要区别在于,带有"opacity: 0"的元素比较难以处理,因为您可以尝试多次点击它,它会多次显示输出。而带有"visibility: hidden"的元素则比较容易处理。

<html>
<head>
   <style>
      .card {
         height: 300px;
         width: 300px;
         background-color: aqua;
         display: flex;
         flex-direction: column;
         justify-content: space-between;
      }
      .part1,
      .part2 {
         height: 45%;
         width: 100%;
         background-color: red;
         color: white;
         font-size: 2rem;
      }
   </style>
</head>
<body>
   <h2>Using the <i> visibility: hidden and opacity: 0 </i> CSS properties</h2>
   <p> Click the below cards to see the result </p>
   <div class = "card">
      <div class = "part1" onclick = "setOpacity0()"> Opacity : 0 </div>
      <div class = "part2" onclick = "setVisibility()">visibility: hidden</div>
   </div>
   <div id = "output"> </div>
   <script>
      let section1 = document.querySelector('.part1');
      let section2 = document.querySelector('.part2');
      let output = document.querySelector('#output');
      function setOpacity0() {
         section1.style.opacity = 0;
         output.innerHTML += 'Opacity : 0 <br>';
      }
      function setVisibility() {
         section2.style.visibility = 'hidden';
         output.innerHTML += 'visibility: hidden <br>';
      }
   </script>
</body>
</html>

什么是 CSS Display 属性?

CSS 属性"display"用于控制 HTML 元素的显示。display 属性可以采用"block"、"inline"、"flex"、"none"等值。

当我们使用"none"作为 CSS Display 属性的值时,它会从网页中移除 HTML 元素。

语法

用户可以按照以下语法在 CSS 中使用 display: none。

display: none

示例

在下面的示例中,我们有三个 div 元素,例如第一个。我们为第一个和第三个 div 元素设置了"display: bloc",为第二个 div 元素设置了"display: none"。用户可以观察到输出从网页中删除了第二个 div。

<html>
<head>
   <style>
      .container {
         height: 100px;
         width: 500px;
         background-color: red;
         padding: 10px;
         display: flex;
         border-radius: 12px;
         font-size: 1.2rem;
      }
      .first, .second, .third {
         height: 80px;
         width: 100px;
         background-color: green;
         border-radius: 12px;
         display: flex;
         color: white;
         margin: 10px;
      }
      .first, .third { display: block;}
      .second { display: none;}
   </style>
</head>
<body>
   <h2>Using the <i> display: none </i> CSS property to remove the HTML element</h2>
   <div class = "container">
      <div class = "first">  display: block </div>
      <div class = "second"> display: none </div>
      <div class = "third">  display: block </div>
   </div>
</body>
</html>

"visibility: Hidden"和"display: None"之间的区别

"visibility"和"display"这两个属性控制HTML元素在网页上的可见性。"visibility: hidden"会在网页中隐藏HTML元素,但不会移除元素,而是占用网页空间。而"display: hidden"CSS属性则会从网页中移除HTML元素,并且不会占用网页空间。

示例

在下面的示例中,我们有"display"和"visible"两个div元素。每当用户点击"display"div元素时,它会为该div元素设置"display: none",同时另一个div移动到中心,用户可以在输出中观察到这一点。

每当用户点击"visible"div元素时,它会为该div元素设置"visibility: hidden",而"display"div不会移动,这表示带有"visibility: hidden"的HTML元素占用了网页空间。

<html>
<head>
   <style>
      .container {
         width: 300px;
         height: 120px;
         background-color: pink;
         display: flex;
         justify-content: center;
         align-items: center;
         border-radius: 10px;
         padding: 10px;
      }
      #visible, #display {
         width: 120px;
         height: 100px;
         margin: 5px;
         background-color: lightblue;
         color: green;
         font-size: 20px;
      }
   </style>
</head>
<body>
   <h2>Using the <i> display: none and visibility: hidden </i> CSS properties to check difference between them</h2>
   <div class = "container">
      <div id = "display"> Click to set display: none </div>
      <div id = "visible"> Click to set visibility: hidden </div>
   </div>
   <br> <br>
   <button id="reset"> Reset </button>
   <script>
      let visible = document.getElementById("visible");
      let display = document.getElementById("display");
      let reset = document.getElementById("reset");
      // Add event listeners to the buttons
      visible.addEventListener("click", function () {
         visible.style.visibility = "hidden";
      });
      display.addEventListener("click", function () {
         display.style.display = "none";
      });
      reset.addEventListener("click", function () {
         visible.style.visibility = "visible";
         display.style.display = "block";
      });
   </script>
</body>
</html>

本教程通过各种示例,帮助用户了解了"visibility: hidden"和"display: none"之间的区别。"visibility: hidden"和"opacity: 0"类似,但"opacity: 0"的HTML元素难以处理,而"visibility: hidden"则不然。


相关文章


有用资源