css中height 从 0 变为 auto 动画不生效问题解决

2023-03-01 09:55:41    技术分享   

在 CSS 中,从 height: 0 到 height: auto 的转变不能通过动画实现,这是因为 height: auto 的高度是根据元素内容的实际高度自动计算的,而不是在 CSS 中预定义的值,所以不能在动画中使用。

要解决这个问题,可以考虑使用其他的解决方案,例如:


① 使用 max-height 属性:将元素的 max-height 属性设置为一个足够大的值,然后将 height 属性从 0 变为 max-height,这样可以实现高度从 0 到实际高度的过渡动画。

.element {
  max-height: 0;
  transition: max-height 0.3s ease-out;
}

.element.open {
  max-height: 500px; /* 设置一个足够大的值 */
  transition: max-height 0.3s ease-in;
}

使用 transform 属性:将元素的 transform 属性从 scaleY(0) 变为 scaleY(1),同时设置 transform-origin 为 top,这样可以实现高度从 0 到实际高度的过渡动画。

.element {
  transform-origin: top;
  transform: scaleY(0);
  transition: transform 0.3s ease-out;
}
.element.open {
  transform: scaleY(1);
  transition: transform 0.3s ease-in;
}

这些方法都可以实现高度从 0 到实际高度的过渡动画,可以根据实际情况选择其中一种来解决问题。

QQ
微信