前提・実現したいこと
HTMLでリストボックスを作っています(レイヤーのリスト表示に使用)
追加ボタンを押すとflexbox内にdiv要素を追加するという処理なのですが、
何個も追加してflexboxの高さより大きくするとそのまま突き抜けてしまいます。
突き抜けず、スクロールできるようにしたい(Flexboxのサイズをグリッドの高さに固定したい)のですがどうすればよいのでしょうか?
下記のコードはそれを簡略化したものです。
発生している問題・エラーメッセージ
Flexbox内の要素の高さがFlexboxの高さを超えるとスクロールにならず、そのままFlexboxの高さが大きくなる
該当のソースコード
HTML
1<html> 2 <div class="wrap"> 3 <p>タイトル</p> 4 <div class="list_wrap"> 5 <div class="list"></div> 6 <button>追加</button> 7 </div> 8 </div> 9</html>
CSS
1*{margin:0;} 2.wrap{ 3 width:300px; 4 height:400px; 5 display: grid; 6 grid-template-rows: 30px 1fr; 7 border: 1px solid #000000; 8} 9.wrap>p{ 10 grid-row:1; 11 margin:auto; 12} 13.list_wrap{ 14 grid-row:2; 15 display:grid; 16 grid-template-rows:1fr 30px; 17} 18.list{ 19 grid-row:1; 20 border: 1px solid #3d3d3d; 21 height:100%; 22 display:flex; 23 flex-direction:column; 24 overflow:auto; 25} 26.list_wrap>button{ 27 grid-row:2; 28 height:auto; 29 margin:2px; 30} 31.item{ 32 height: 30px; 33}
JS
1document.querySelector("button").addEventListener("click",this.addList); 2function addList(){ 3 document.querySelector(".list").innerHTML+=`<div class="item">アイテム</div>`; 4}
試したこと
- .list_wrapのgrid-template-rowsをfrから絶対値(px)に変えるとスクロールになるが、グリッドの高さが可変する用途なので、frを使いたい
- .listの高さを絶対値に変えた(上と同様)