次の HTML があります
html
1<!doctype html> 2 3<style> 4body{ 5 margin: 0; 6 height: 100vh; 7 display: flex; 8 flex-flow: column; 9} 10header { 11 height: 30px; 12 background-color: #55a0ff; 13 flex: none; 14} 15.body { 16 height: 0; 17 flex: 1 1 auto; 18 display: flex; 19} 20aside { 21 width: 200px; 22 flex: none; 23 background-color: #66E8A0; 24} 25main { 26 flex: 1 1 auto; 27 overflow: auto; 28 padding: 20px; 29} 30main h1 { 31 color: white; 32 background-color: #f65f77; 33 margin: 0; 34 position: sticky; 35 top: 0; 36} 37</style> 38 39<header>header</header> 40<section class="body"> 41 <aside>sidebar</aside> 42 <main> 43 <section> 44 <h1>sticky</h1> 45 <div>text</div><div>text</div><div>text</div><div>text</div> 46 <div>text</div><div>text</div><div>text</div><div>text</div> 47 <div>text</div><div>text</div><div>text</div><div>text</div> 48 <div>text</div><div>text</div><div>text</div><div>text</div> 49 <div>text</div><div>text</div><div>text</div><div>text</div> 50 <div>text</div><div>text</div><div>text</div><div>text</div> 51 <div>text</div><div>text</div><div>text</div><div>text</div> 52 <div>text</div><div>text</div><div>text</div><div>text</div> 53 <div>text</div><div>text</div><div>text</div><div>text</div> 54 <div>text</div><div>text</div><div>text</div><div>text</div> 55 <div>text</div><div>text</div><div>text</div><div>text</div> 56 <div>text</div><div>text</div><div>text</div><div>text</div> 57 <div>text</div><div>text</div><div>text</div><div>text</div> 58 <div>text</div><div>text</div><div>text</div><div>text</div> 59 <div>text</div><div>text</div><div>text</div><div>text</div> 60 <div>text</div><div>text</div><div>text</div><div>text</div> 61 <div>text</div><div>text</div><div>text</div><div>text</div> 62 <div>text</div><div>text</div><div>text</div><div>text</div> 63 <div>text</div><div>text</div><div>text</div><div>text</div> 64 <div>text</div><div>text</div><div>text</div><div>text</div> 65 <div>text</div><div>text</div><div>text</div><div>text</div> 66 <div>...</div> 67 <h1>sticky2</h1> 68 <div>text</div><div>text</div><div>text</div><div>text</div> 69 <div>text</div><div>text</div><div>text</div><div>text</div> 70 <div>text</div><div>text</div><div>text</div><div>text</div> 71 <div>text</div><div>text</div><div>text</div><div>text</div> 72 <div>text</div><div>text</div><div>text</div><div>text</div> 73 <div>text</div><div>text</div><div>text</div><div>text</div> 74 <div>text</div><div>text</div><div>text</div><div>text</div> 75 <div>text</div><div>text</div><div>text</div><div>text</div> 76 <div>text</div><div>text</div><div>text</div><div>text</div> 77 <div>text</div><div>text</div><div>text</div><div>text</div> 78 <div>text</div><div>text</div><div>text</div><div>text</div> 79 <div>text</div><div>text</div><div>text</div><div>text</div> 80 <div>text</div><div>text</div><div>text</div><div>text</div> 81 <div>text</div><div>text</div><div>text</div><div>text</div> 82 <div>text</div><div>text</div><div>text</div><div>text</div> 83 <div>text</div><div>text</div><div>text</div><div>text</div> 84 <div>text</div><div>text</div><div>text</div><div>text</div> 85 <div>text</div><div>text</div><div>text</div><div>text</div> 86 <div>text</div><div>text</div><div>text</div><div>text</div> 87 <div>text</div><div>text</div><div>text</div><div>text</div> 88 <div>text</div><div>text</div><div>text</div><div>text</div> 89 ... 90 </section> 91 </main> 92</section>
main 要素の内側がスクロールし、 h1 が sticky となっているので上部で h1 要素が固定されますが、スクロールすると h1 の上の余白部分に text が表示されています。
main の padding 部分には何も表示しないようにしたいです。
はみ出してほしくないので単純に main の内側で overflow: hidden;
を設定すればよいというものでもありません。(sticky やスクロールバーの位置がおかしくなる)
スクロールバーの位置は main 要素全体 (余白の内側に持ってこない) として、余白部分には表示しないことは実現は可能でしょうか?
以下の方法は実現できるものの避けたいと考えています。
- 余白部分に背景色と同じ色のブロック要素を本文より上のレイヤに座標指定で配置し見えなくする
- JavaScript を使う
- スクロールバー自体を実装したり、表示用のスクロールバーを置いておいて実際にスクロールしたい部分と同期させる
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/06/03 05:41