【问题标题】:CSS - Animate element's height to auto [duplicate]CSS - 动画元素的高度自动[重复]
【发布时间】:2017-03-13 19:55:24
【问题描述】:

这似乎是一个愚蠢的问题,但我已经做了好几个小时了,我无法让这个简单的事情发挥作用。

我有一个高度为0px的元素。

HTML

<div class="element"> ...content... </div>

CSS

.element {
    height: 0px;
    overflow: hidden;
    transition: height 2s;
}

然后我有一些 js 会检查何时单击按钮,并将类“animate”添加到元素中。

CSS

.animate {
    height: auto;
}

问题是,没有任何像 css 中指定的 2 秒动画。

我测试了同样的东西,但不是动画到height: auto;,而是动画到height: 150px;

这样做是可行的,但我需要使用自动高度,因为内容的高度会有所不同。

这是我创建的 JSFiddle:https://jsfiddle.net/0ctzc4hv/1/

如何将元素的高度设置为自动?

提前致谢,

大卫

【问题讨论】:

  • 你不能动画到auto,但是你可以使用max-height,你把它设置成一个足够大的值来覆盖最高的内容
  • @LGSon @DaniP 谢谢!如果最大高度是无限的怎么办?我应该像100000 一样坚持下去吗?
  • 不,这样的动画很可能不好看,那么我建议使用脚本来计算最高的一个

标签: javascript html css animation


【解决方案1】:

你为什么不隐藏它,然后使用jquery来实现你想要的:

隐藏元素:

Display: none; 

jQuery 函数:

$('you_element').slideDown();

【讨论】:

  • 我想要一个纯 css 解决方案来解决这个问题。另外,如果我真的必须使用 javascript,我将无法在我正在处理的项目中使用 jQuery。
【解决方案2】:

auto 属性不可设置动画,您可以通过设置 max-height 属性的动画来解决此问题。

【讨论】:

    猜你喜欢
    • 2017-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-31
    • 2020-04-21
    • 2023-04-04
    • 1970-01-01
    相关资源
    最近更新 更多