如何使用 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+ 次浏览

启动你的职业生涯

完成课程获得认证

开始学习
广告