如何使用 CSS 將高度從 0 過渡到 auto?


將高度從 0 過渡到 "auto" 是一種透過動畫平滑地調整元素高度以適應其內容的方式。在網頁開發中,建立流暢優雅的過渡效果可以使網站更具吸引力,並提供更好的使用者體驗。但是,建立從 0 高度到 "auto" 高度的過渡可能有點棘手。

語法

transition: [property] [duration] [timing-function] [delay];

這裡,屬性是我們想要動畫化的 CSS 屬性,持續時間是我們希望過渡持續的時間長度,時間函式指定過渡的時間曲線或速度,它決定動畫如何隨著時間的推移加速或減速,而延遲是一個可選引數,用於設定在開始過渡之前要等待的時間。

高度過渡

在 CSS 中,過渡是一種在元素的兩個狀態之間建立平滑動態動畫的方式。具體來說,高度過渡是指當元素的高度屬性發生變化時出現的動畫效果,這可以改善使用者體驗並使網站更具吸引力。

例如,如果我們想要在展開或摺疊 div 或切換下拉選單的可見性時建立平滑過渡,我們可以使用帶有高度屬性的 CSS transition 屬性輕鬆實現。

將高度從 0 動畫到 "Auto"

當我們想要建立從 0 高度到 "auto" 高度的過渡時,它並不像簡單地將高度屬性設定為 "auto" 那樣簡單。"auto" 值實際上不是 CSS 過渡的有效值。我們可以透過以下步驟來實現。

步驟 1:建立 HTML 結構

要建立過渡,首先我們需要一個要應用它的 HTML 元素。讓我們使用一個 class 為 "element" 的 div。

例如 -

<div class="element">
   <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
   <p>Nulla faucibus nisi nec ullamcorper finibus.</p>
</div>

步驟 2:新增 CSS

建立 HTML 結構後,我們需要新增一些 CSS 來建立過渡。我們首先將 "element" 類的初始高度設定為 0,並將溢位設定為隱藏。

例如 -

.element {
   height: 0;
   overflow: hidden;
}

這將隱藏元素內部的內容,直到它展開。

步驟 3:新增過渡

現在,我們需要將 transition 屬性新增到元素。我們使用 height 屬性並設定持續時間和時間函式。

例如 -

.element {
   height: 0;
   overflow: hidden;
   transition: height 0.5s ease-in-out;
}

在這個例子中,過渡將持續 0.5 秒,並使用 ease-out 時間函式,這意味著過渡將快速開始並在結束時慢下來。

步驟 4:設定展開狀態

在這裡,為了設定元素的展開狀態,我們使用偽類並將高度設定為 auto。

input[type="checkbox"]:checked~.element {
   height: auto;
}

示例 1

這是一個使用 CSS 將高度從 0 過渡到 auto 的示例。

<!DOCTYPE html>
<html>
 <head>
   <style>
      body { text-align: center; }
      .element {
         height: 0;
         overflow: hidden;
         transition: height 0.5s ease-in-out;
      }
      input[type="checkbox"]:checked~.element {
         height: auto;
      }
      p { margin: 0;}
   </style>
</head>
   <body>
      <h3>Transitioning height 0 to auto using CSS</h3>
      <input type="checkbox" id="toggle">
      <label for="toggle">Toggle Element</label>
      <div class="element">
         <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
         <p>Nulla faucibus nisi nec ullamcorper finibus.</p>
      </div>
   </body>
</html>

示例 2

這是一個使用 CSS 將高度從 0 過渡到 auto 的另一個示例。

<!DOCTYPE html>
<html>
<head>
   <style>
      body{ text-align:center;}
      .box {
         max-height: 0;
         width:200px;
         margin:auto;
         transition: max-height 1.4s ease-out;
         overflow: hidden;
         background: #b2ceed;
      }
      .tab:hover .box {
         max-height: 500px;
         transition: max-height 1s ease-in;
      }
   </style>
</head>
   <body>
      <h2>Transition height 0 to auto using CSS </h2>
      <div class="tab"><b>Hover on me to increase the height.</b>
         <div class="box">Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s</div>
      </div>
   </body>
</html>

結論

使用 CSS 建立從 0 到 auto 的過渡是一種簡單而有效的方法,可以為網站新增視覺趣味。透過遵循本文中概述的步驟,我們可以輕鬆建立此效果並增強網站的使用者體驗。

更新於:2023年3月16日

7000+ 次瀏覽

啟動你的職業生涯

完成課程獲得認證

開始學習
廣告