简介
在本实验中,我们将探索如何在元素高度未知的情况下,使其高度从 0 平滑过渡到 auto。此技术对于创建下拉菜单、手风琴和其他动画内容很有用。通过使用 CSS 的 transition、max-height 和 overflow 属性,以及 JavaScript 动态设置高度值,我们可以创建无缝且视觉上吸引人的用户体验。
这是一个实验(Guided Lab),提供逐步指导来帮助你学习和实践。请仔细按照说明完成每个步骤,获得实际操作经验。根据历史数据,这是一个 初级 级别的实验,完成率为 100%。获得了学习者 100% 的好评率。
高度过渡
虚拟机中已经提供了 index.html 和 style.css。
以下代码片段通过执行以下步骤,在元素高度未知时将其高度从 0 过渡到 auto:
- 使用
transition属性指定对max-height的更改应在0.3 秒的持续时间内进行过渡。 - 将
overflow属性设置为hidden,以防止隐藏元素的内容溢出其容器。 - 使用
max-height属性指定初始高度为0。 - 使用
:hover伪类将max-height更改为由 JavaScript 设置的--max-height变量的值。 - 使用
Element.scrollHeight属性和CSSStyleDeclaration.setProperty()方法将--max-height的值设置为元素的当前高度。 - 注意:此方法会在每个动画帧上导致重排,当过渡元素下方有大量元素时,可能会导致延迟。
<div class="trigger">
悬停在我上面以查看高度过渡。
<div class="el">附加内容</div>
</div>
.el {
transition: max-height 0.3s;
overflow: hidden;
max-height: 0;
}
.trigger:hover > .el {
max-height: var(--max-height);
}
let el = document.querySelector(".el");
let height = el.scrollHeight;
el.style.setProperty("--max-height", height + "px");
请点击右下角的“上线”以在端口 8080 上运行网络服务。然后,你可以刷新“Web 8080”标签页以预览网页。
总结
恭喜你!你已经完成了高度过渡实验。你可以在 LabEx 中练习更多实验来提升你的技能。