CSS 中的过渡高度
本文将介绍几种在 CSS 中将过渡应用于元素高度的方法。
transition
是一种广泛使用的属性,可以在给定的持续时间内平滑地更改属性值。过渡也可以命名为动画。
转换具有某些属性,例如 transition-property
、transition-duration
、transition-timing-function
和 transition-delay
。transition-property
定义了使用过渡效果更改的 CSS 属性。
transition-duration
定义了完成转换需要多长时间,即以秒为单位的时间。transition-timing-function
定义了过渡应该如何发生,即对过渡产生什么影响。
transition-timing-function
可以有 ease
, ease-in
, ease-out
, linear
, ease-in-out
等。transition-delay
属性指定了多少时间应该需要开始过渡。
我们可以组合这些属性并使用转换简写属性,如下所示。
transition: height 2s linear 1s;
这里,height
表示 transition-property
,2s
定义 transition-duration
,linear
指定 transition-timing-function
,1s
定义 transition-delay
。
我们可以使用 transition
和 max-height
属性将元素的高度从 0
设置为 auto
。我们可以将鼠标悬停在文本上以更改特定 HTML 元素的高度。
当 max-height
设置为 0
时,我们可以使用 overflow:hidden
属性隐藏溢出的项目。
例如,创建一个 div
并给它一个 main
的 id。在那个 div
中,创建一个段落标签 p
并写下 Hover Me
。
接下来,创建一个带有 ul
标签的无序列表,并给它一个 ID 为 items
。使用 li
标签,在 ul
中创建一些列表项。
在 CSS 中,选择 items
id 并将 max-height
设置为 0
。它确保不显示 ul
内的项目。
接下来,将 background
属性设置为 gray
。将 overflow
属性设置为 hidden
。
当 max-height
为 0 时,它将隐藏溢出的 ul
项目。之后,将 transition
属性设置为 max-height 0.15s ease-out
。
当鼠标光标悬停时,它将为列表项提供缓出
效果。
使用 :hover
选择器选择 main
id,然后选择 items
id。然后,将 max-height
的值设置为 500px
。
因此,当屏幕尺寸小于 500px 时,它会根据 ul
项自动调整其高度。然后,将过渡属性设置为 transition: max-height 0.25s ease-in;
。
这将在 0.25
秒内将 ul
的高度设置为自动并具有 ease-in
效果。
下面的示例显示了在将鼠标悬停在具有效果的文本时显示无序列表。悬停在文本之外时,无序列表会淡出。
<div id="main">
<p>Hover Me</p>
<ul id="items">
<li>item1</li>
<li>item2</li>
<li>item3</li>
<li>item4</li>
</ul>
</div>
#main #items {
max-height: 0;
transition: max-height 0.15s ease-out;
overflow: hidden;
background: gray;
}
#main:hover #items {
max-height: 500px;
transition: max-height 0.25s ease-in;
}
transform
属性用于元素的 2D 或 3D 转换。该属性可以具有诸如 rotate
、scale
、skew
、move
、translate
等值。
在本教程中,我们将使用 scale
来更改元素的高度。我们还将使用 transition
属性在高度发生变化时创建动画。
scale
属性用于调整元素的大小。我们可以使用 scaleX
在 X 轴上使用 scale
,并使用 scaleY
在 Y 轴上进行缩放。
在这里,我们将使用 scaleY
来调整元素的高度,这应该是垂直的(沿 Y 轴)。scaleY(1)
值表示元素的高度为 100%,值 scaleY(0)
表示元素的高度为 0%。
有一个属性叫做 transform-origin
。它的值告诉我们应该从哪里开始转换。
由于我们想通过将高度从 0
增加到 auto
来从上到下扩展高度,我们可以将 transform-origin
的值设置为 top
。当我们悬停一个元素时,我们可以将 transform
的值设置为 scaleY(1)
以将其高度设置为 auto。
我们将使用与第一种方法相同的 HTML 模板进行演示。
例如,选择 #main #items
的 items
id 并应用样式。将背景颜色
设置为灰色
。
接下来,将 transform
属性设置为 scaleY(0)
。这会将元素的高度设置为 0
。
然后将 transform-origin
属性设置为 top
,因为我们希望转换从上到下开始。然后为 transition
属性应用样式 transform 0.3s ease
。
这里的 transform
表示我们希望在悬停时发生动画的属性。0.3
s 表示完成动画所需的时间。
ease
表示 transition-timing-function
,表示动画应该发生。最后,使用 : hover
选择器将 transform
属性设置为 scaleY(1)
。
当我们悬停 div
时,ul
的高度随着变换值从 scaleY(0)
变为 scaleY(1)
而增加。
示例代码:
<div id="main">
<p>Hover Me</p>
<ul id="items">
<li>item1</li>
<li>item2</li>
<li>item3</li>
<li>item4</li>
</ul>
</div>
#main #items {
background-color: gray;
transform: scaleY(0);
transform-origin: top;
transition: transform 0.3s ease;
}
#main:hover #items {
transform: scaleY(1);
}
相关文章
Do you understand JavaScript closures?
发布时间:2025/02/21 浏览次数:108 分类:JavaScript
-
The function of a closure can be inferred from its name, suggesting that it is related to the concept of scope. A closure itself is a core concept in JavaScript, and being a core concept, it is naturally also a difficult one.
Do you know about the hidden traps in variables in JavaScript?
发布时间:2025/02/21 浏览次数:178 分类:JavaScript
-
Whether you're just starting to learn JavaScript or have been using it for a long time, I believe you'll encounter some traps related to JavaScript variable scope. The goal is to identify these traps before you fall into them, in order to av
How much do you know about the Prototype Chain?
发布时间:2025/02/21 浏览次数:150 分类:JavaScript
-
The prototype chain can be considered one of the core features of JavaScript, and certainly one of its more challenging aspects. If you've learned other object-oriented programming languages, you may find it somewhat confusing when you start
用 jQuery 检查复选框是否被选中
发布时间:2024/03/24 浏览次数:102 分类:JavaScript
-
在本教程中学习 jQuery 检查复选框是否被选中的所有很酷的方法。我们展示了使用直接 DOM 操作、提取 JavaScript 属性的 jQuery 方法以及使用 jQuery 选择器的不同方法。你还将找到许多有用的
jQuery 中的 Window.onload 与 $(document).ready
发布时间:2024/03/24 浏览次数:180 分类:JavaScript
-
本教程演示了如何在 jQuery 中使用 Window.onload 和 $(document).ready 事件。