发布于 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

  1. transition: max-height: 0.5s cubic-bezier(...)指定更改为max-height应使用ease-out-quint定时函数。
  2. overflow: hidden防止隐藏元素的内容溢出其容器。
  3. max-height: 0指定元素最初没有高度。
  4. .target:hover > .el指定当父项悬停在上方时,以子项为目标.el并使用--max-height由JavaScript定义的变量。

JavaScript

  1. el.scrollHeight是包含溢出的元素的高度,它将根据元素的内容动态更改。
  2. el.style.setProperty(...)设置--max-height用于指定max-height目标悬停在其上的元素的,允许它从0平滑过渡到auto。
©2020 edoou.com   京ICP备16001874号-3