前提・実現したいこと
表題の通りです。
子要素にposition: absolute
が設定されているものがある場合、親要素をheight: 0
にして隠しても子要素が存在し続けます。これを、子要素のクラス等をいじることなく、消したいと考えています。
以下の例で、青背景をスクロールした下にあるオレンジの背景部分の要素を消したい。また、レイアウトからも消えてほしいです(スクロールバーが出てほしくない)。
https://jsfiddle.net/vxnqr47d/43/
親要素でdisplay: none
を使わない理由は、transition
を利用したいからです。
親要素はアコーディオンメニューで、引き出しのようなアニメーションを実現するためにはdisplay: none
でなくheight: 0
-> height: 100px
などで行う必要があるためです。
該当のソースコード
https://jsfiddle.net/vxnqr47d/43/
の内容を書き下します。
html
1<div class="of-auto">a 2 <div class="content"> 3 <div class="innercontent">B</div> 4 <div class="innercontent2">v</div> 5 </div> 6</div>
css
1.of-auto { 2 position: fixed; 3 left: 0; 4 top:1em; 5 overflow: auto; 6 height: 200px; 7 width: 200px; 8 background-color: blue; 9 color: white; 10} 11 12.content { 13 overflow: hidden; 14 height: 0; 15 max-height: 0; 16 margin: 0; 17} 18 19.innercontent { 20 background-color: red; 21 height:600px; 22} 23 24.innercontent2 { 25 background-color: orange; 26 height:100px; 27 position : absolute; 28 right:0; 29}
試したこと
.contentにvisibility: hidden
を設定してもダメでした。
.contentにdisplay: none
を設定するとうまく消えますが、それではtransition
ができないのでダメです。
.innercontent2からposition: absolute
を削除することで隠れることも確認済みです。


回答1件
あなたの回答
tips
プレビュー