前提・実現したいこと
下記は動作するサンプルです。
サンプル(Code Sand Box)
画面右上のopenボタンを押すことで、右からドロワーメニューを表示します。
画面の縦幅が狭い場合は、ドロワーメニューがはみ出てしまい、メニューの下が見えなくなります。
なので、画面からはみ出たらドロワーメニュー内をスクロールできるようにし、メニューをすべて見れるようにしたいです。
発生している問題・エラーメッセージ
ドロワーメニューが画面からはみ出ると、メニューの下の要素が見えなくなります。
該当のソースコード
html
1 <header> 2 <button id="open">open</button> 3 </header> 4 <aside id="side"> 5 <button id="close">close</button> 6 <nav> 7 <ul> 8 <li>A</li> 9 <li>B</li> 10 <li>C</li> 11 <li>D</li> 12 <li>E</li> 13 <li>F</li> 14 <li>G</li> 15 <li>H</li> 16 <li>I</li> 17 <li>J</li> 18 <li>K</li> 19 </ul> 20 </nav> 21 </aside>
css
1* { 2 box-sizing: border-box; 3} 4 5body { 6 margin: 0; 7 background-color: #333; 8} 9 10header { 11 background-color: #999; 12 padding: 1em; 13} 14 15button { 16 cursor: pointer; 17} 18 19header button { 20 display: block; 21 margin-left: auto; 22} 23 24aside { 25 background-color: #999; 26 width: 200px; 27 position: fixed; 28 right: -100vw; 29 top: 0; 30 padding: 1em; 31 transition: 0.3s; 32} 33 34aside.open { 35 right: 0; 36} 37 38aside ul { 39 margin: 0; 40 padding: 0; 41 list-style: none; 42} 43 44aside li:nth-of-type(n + 2) { 45 border-top: 1px solid white; 46}
試したこと
ドロワーメニューのul
に下記のスタイルを設定することで、スクロールできるようになりました。
css
1aside ul { 2 height: 90vh; 3 overflow-y: auto; 4}
しかし、一番下までスクロールした際、画面サイズによってはみ出たリストの見え具合が異なります。
また、極端に画面幅を狭めれば、やはりはみ出した分のリストが見えなくなります。
上記のheight
の値を小さくするほどスクロールできるようになりますが、逆にリストが画面内に収まった際に、リストが途切れた表示になります。
回答2件
あなたの回答
tips
プレビュー