动画在最大高度?

时间:2015-12-01 07:25:38

标签: javascript html css

我有一个特定高度的div,当我切换"折叠"如果div太高,它应该缩小到特定的最大高度。我一直试图让这种萎缩变得有活力,但还没有想到它。我已经在网上查了一遍,似乎在元素上加上以下几行就足够了。

-moz-transition: 1s;
-ms-transition: 1s;
-o-transition: 1s;
-webkit-transition: 1s;
transition: 1s;

然而,无论我分配哪些类,它都没有工作。我有一个jsfiddle

关于如何做到这一点的任何想法?谢谢!

2 个答案:

答案 0 :(得分:2)

transition仅在您正在更改的高度属性未解析为auto时才有效。

我已更新your jsfiddle以反映所需的更改。

答案 1 :(得分:0)

下面,我更新了您的示例。这些是修复:

  1. 您需要在transition中为动画添加属性。在您的情况下max-height
  2. 您的#rect规则覆盖了您的.collapsed规则,因为它具有更高的特异性。您可以改为使用#rect.collapsed
  3. 您需要在两个州设置一个大于或等于max-height的初始height和任意max-height
  4. 我在您的示例中注意到您可以更轻松地转换height属性,但我认为在您的实际项目中您无法做到?

    
    
    $("#toggle").click(function() {
        $("#rect").toggleClass("collapsed");
    });
    
    #rect {
        background-color:red; 
        max-height: 200px;
        height: 2000px; /* arbitrary value >= max-height */
        -moz-transition: max-height 1s;
        -ms-transition: max-height 1s;
        -o-transition: max-height 1s;
        -webkit-transition: max-height 1s;
        transition: max-height 1s;
    }
    #rect.collapsed {
        max-height: 100px;
    }
    
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div id="rect"></div>
    <button id="toggle">hi</button>
    &#13;
    &#13;
    &#13;