2016-10-31 6 views
0

これは愚かな質問のようですが、私は数時間それをしてきましたが、この簡単なことはできません。CSS - 要素の高さをautoにアニメ化

高さは0pxです。

HTML

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

CSS

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

は、それから私は、ボタンがクリックされたときにチェックするいくつかのJSを得て、要素にクラスのアニメーション」を追加しました。問題がある

CSS

.animate { 
    height: auto; 
} 

、CSSで指定したような一切の2秒のアニメーションはありません。

私は同じことをテストしましたが、height: auto;にアニメーション化するのではなく、height: 150px;にアニメーション化しました。

これを行うと効果はありますが、コンテンツの高さが変わるため高さautoを使用する必要があります。ここで

がJSFiddleである私が作成した:https://jsfiddle.net/0ctzc4hv/1/

は、どのように私はautoに要素の高さをアニメーションに行きますか?事前に

おかげで、

デビッド

+0

あなたがすることはできません

は、要素を非表示にします'auto'にアニメートしますが、' max-height'を使うと、最高のコンテンツをカバーするのに十分な大きさの値に設定することができます – LGSon

+0

... https://jsfiddle.net/0ctzc4hv/2/ – DaniP

+0

@LGSon @DaniPありがとう!最大高さに制限がない場合はどうなりますか?私はちょうど '100000'か何かのようにしておくべきですか? –

答えて

1

autoプロパティがアニメーション可能ではない、あなたがこのことにより、最大の高さのプロパティをアニメーション化回避することができます。

1

あなたはそれを隠さないのはなぜ、あなたが望むものを達成するためにjqueryのを使用します。

Display: none; 

jQueryの機能::

$('you_element').slideDown(); 
+0

この問題に対する純粋なCSSの解決が欲しいです。また、私は本当にjavascriptを使用しなければならなかった場合、私が取り組んでいるプロジェクトにjQueryを使用することはできません。 –

関連する問題