CSS を使用して height:0;height:auto; を遷移するにはどうすればよいですか?
P粉461599845
2023-08-27 11:59:03
<p>CSS トランジションを使用して <code></code></p><ul> を下にスライドさせようとしています。 <p><br /></p>
<p><code></code></p><ul> <code>高さ: 0;</code> から始まります。ホバーすると、高さが <code>height:auto;</code> に設定されます。ただし、これでは、</em> 遷移せずに <em> が表示されるだけになります。
<p><code>height: 40px;</code> から <code>height: auto;</code> にすると、<code>height: 0;< までスライドします。 /code> そして突然正しい高さにジャンプします。 </p>
<p>JavaScript を使用せずにこれを行うにはどうすればよいですか? </p>
<p><br /></p>
<pre class="brush:css;toolbar:false;">#child0 {
高さ: 0;
オーバーフロー: 非表示;
背景色: #dedede;
-moz-transition: 高さ 1 秒の緩和;
-webkit-transition: 高さ 1 秒の簡単さ;
-o-transition: 高さ 1 秒の緩和。
トランジション: 高さ 1 秒の緩和。
}
#parent0:ホバー #child0 {
高さ: 自動;
}
#child40 {
高さ: 40ピクセル;
オーバーフロー: 非表示;
背景色: #dedede;
-moz-transition: 高さ 1 秒の緩和;
-webkit-transition: 高さ 1 秒の簡単さ;
-o-transition: 高さ 1 秒の緩和。
トランジション: 高さ 1 秒の緩和。
}
#parent40:ホバー #child40 {
高さ: 自動;
}
h1 {
フォントの太さ: 太字;
}</pre>
<pre class="brush:html;toolbar:false;">CSS の 2 つのスニペットの唯一の違いは、一方の高さは 0、もう一方の高さは 40 であることです。
<時間>
<div id="parent0">
<h1>私にカーソルを合わせてください (高さ: 0)</h1>
<div id="child0">一部のコンテンツ
<br>一部のコンテンツ
<br>一部のコンテンツ
<br>一部のコンテンツ
<br>一部のコンテンツ
<br>一部のコンテンツ
<br>
</div>
</div>
<時間>
<div id="parent40">
<h1>私にカーソルを合わせてください (高さ: 40)</h1>
<div id="child40">一部のコンテンツ
<br>一部のコンテンツ
<br>一部のコンテンツ
<br>一部のコンテンツ
<br>一部のコンテンツ
<br>一部のコンテンツ
<br>
</div>
</div></pre>
<p><br /></p></ul></ul>
scaleY を使用する必要があります。
上記のコードのベンダー プレフィックス付きバージョンを jsfiddle で作成し、高さの代わりにscaleY を使用するように jsfiddle を変更しました。
#########編集######scaleY がコンテンツを変換する方法を好まない人もいます。これが問題になる場合は、代わりに clip を使用することをお勧めします。
リーリー リーリー
トランジションでは
height
の代わりにmax-height
を使用します。そして、max-height
の値をボックスよりも大きな値に設定します。Chris Jordan の に対する回答は、別の JSFiddle デモでご覧ください /stackoverflow.com/a/20226830/18706">