发布于 4年前
CSS实现元素高度过渡动画
从转换元素的高度0到auto当其高度未知时。
HTML
<div class="trigger">
Hover me to see a height transition.
<div class="el">content</div>
</div>
CSS
.el {
transition: max-height 0.5s;
overflow: hidden;
max-height: 0;
}
.trigger:hover > .el {
max-height: var(--max-height);
}
JAVASCRIPT
var el = document.querySelector('.el')
var height = el.scrollHeight
el.style.setProperty('--max-height', height + 'px')
说明
CSS
- transition: max-height: 0.5s cubic-bezier(...)指定更改为max-height应使用ease-out-quint定时函数。
- overflow: hidden防止隐藏元素的内容溢出其容器。
- max-height: 0指定元素最初没有高度。
- .target:hover > .el指定当父项悬停在上方时,以子项为目标.el并使用--max-height由JavaScript定义的变量。
JavaScript
- el.scrollHeight是包含溢出的元素的高度,它将根据元素的内容动态更改。
- el.style.setProperty(...)设置--max-height用于指定max-height目标悬停在其上的元素的,允许它从0平滑过渡到auto。