IEの場合にスクロールバーが期待通りにならないのは、div.scroll
要素のheightが事実上auto
になっていて、コンテンツの高さいっぱいにまでビューポートが広がっているからです。
.scrollにはheight: 100%
と指定されていますが、heightにパーセンテージを指定した際の挙動はmozillaのドキュメントを読むとこうなっています。
パーセント値は、生成ボックスの包含ブロックの高さを基準に計算されます。 包含ブロックの高さが明示的に定義されず (すなわち、コンテンツの高さに依存します)、この要素が絶対位置指定されていない場合は、値は auto になります。ルート要素で高さをパーセント値で指定すると、初期包含ブロックに対する相対値になります。
https://developer.mozilla.org/ja/docs/Web/CSS/height
当該要素の包括ブロックにもheightが明示されてない場合は、どんどん親要素をさかのぼっていくことになります。ところが、この件の場合親要素をrootまでさかのぼっても明示的なheightを指定している要素は存在しません。
div.modal
でmax-height: 300px
を指定していますが、これはIE11では「ブロックの高さを明示」している扱いにならないのでしょう。
なので、div.scroll
のheight: 100%
は包括ブロックを全てさかのぼっても明示された高さがないのでauto
扱いになっています。autoの場合、中のコンテンツが全部入りきるまでサイズが拡張されるのでoverflowも無意味となります。
解決策としては、どこかに具体的数値のheightを指定すれば良いかと思います。元のレイアウトの意図に合うかどうかは分かりませんが、div.modal
にheight:300px
を指定すればとりあえずOKなのではないでしょうか。
少なくとも私が検証した限りではこの指定で他のブラウザと同等のスクロール表示になりました。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/18 10:15
2021/05/18 10:23
2021/05/18 13:56
2021/05/18 14:53