Example HTML:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Resize bug</title>
</head>
<body>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
</style>
<div style="display: flex; flex-direction: column; max-height: 100vh; width: 400px">
<div style="background-color: aqua; min-height: 0; display: flex; flex-direction: column">
<div>header</div>
<div style="min-height: 0; overflow-y: auto; overflow-x: hidden">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam sagittis eu ex sed faucibus. Nulla
facilisi. Phasellus ac hendrerit libero. Pellentesque nec urna convallis leo aliquet maximus nec
quis erat. Vivamus id congue quam. Nullam fringilla eget nunc tincidunt faucibus. Etiam sit amet
arcu leo. Sed rutrum varius nibh, id vulputate massa laoreet eget. Sed pretium euismod neque et
fermentum. Etiam id orci varius, feugiat ligula sed, interdum est. Donec scelerisque imperdiet odio.
Quisque rutrum ut ligula sit amet tincidunt. Sed in dui tempus, malesuada massa eu, rutrum felis.
Suspendisse potenti. Cras viverra eros massa, vel vulputate sem tincidunt eget. Nulla ac finibus
metus, in tincidunt justo. Donec vehicula mi est, sit amet aliquet libero tincidunt rhoncus. Integer
malesuada accumsan elit sit amet pretium. Morbi malesuada viverra aliquam. Maecenas ultrices ex
ante, non tristique libero molestie sed. Aenean sed venenatis nunc. Maecenas a cursus dolor, ut
maximus diam. In sed lacus urna. Maecenas auctor posuere tempor. Phasellus velit nisl, venenatis
quis suscipit eu, sollicitudin at turpis. Vestibulum facilisis sodales ullamcorper. Mauris blandit
ligula pellentesque mauris rhoncus pellentesque at et quam.
</div>
</div>
<div style="background-color: orange; margin-top: 0.25rem">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam sagittis eu ex sed faucibus. Nulla
facilisi. Phasellus ac hendrerit libero. Pellentesque nec urna convallis leo aliquet maximus nec quis
erat. Vivamus id congue quam. Nullam fringilla eget nunc tincidunt faucibus. Etiam sit amet arcu leo.
Sed rutrum varius nibh, id vulputate massa laoreet eget. Sed pretium euismod neque et fermentum. Etiam
id orci varius, feugiat ligula sed, interdum est. Donec scelerisque imperdiet odio. Quisque rutrum ut
ligula sit amet tincidunt. Sed in dui tempus, malesuada massa eu, rutrum felis. Suspendisse potenti.
Cras viverra eros massa, vel vulputate sem tincidunt eget. Nulla ac finibus metus, in tincidunt justo.
Donec vehicula mi est, sit amet aliquet libero tincidunt rhoncus. Integer malesuada accumsan elit sit
amet pretium. Morbi malesuada viverra aliquam. Maecenas ultrices ex ante, non tristique libero molestie
sed. Aenean sed venenatis nunc. Maecenas a cursus dolor, ut maximus diam. In sed lacus urna. Maecenas
auctor posuere tempor. Phasellus velit nisl, venenatis quis suscipit eu, sollicitudin at turpis.
Vestibulum facilisis sodales ullamcorper. Mauris blandit ligula pellentesque mauris rhoncus pellentesque
at et quam. Maecenas congue tortor eget mi lobortis rhoncus. Integer tempus quam quis augue consectetur,
ut varius lacus sollicitudin. Mauris aliquam vestibulum eros, eu gravida massa. Etiam id ipsum a nisl
ultrices fringilla. Etiam convallis ut quam at bibendum. Donec porta leo est, tincidunt dignissim ipsum
dignissim ut. Sed tincidunt arcu non sem aliquet rhoncus. Cras gravida lectus quis nunc efficitur
pellentesque. Nullam tempus mi id mauris ultrices consectetur. Etiam vel tincidunt neque. Ut placerat,
enim condimentum suscipit molestie, sem felis feugiat lectus, a tempor neque nisl sit amet dolor. Donec
egestas nec felis et efficitur. Vivamus pharetra accumsan auctor. Nulla rhoncus dapibus velit eleifend
hendrerit. Sed fermentum fringilla maximus. Suspendisse nisi quam, maximus vel ex nec, commodo ultricies
orci. Morbi ac enim in orci ullamcorper tempus. Cras varius volutpat quam in ullamcorper.
</div>
</div>
</body>
</html>
Open this html in Chrome (version 133.0.6943.142) with a large enough window shows:
Note that there is no scroll bar in the aqua div.
Then resize the browser window to be smaller in height, then the scroll bar appear in the first div since it has min-height: 0
Then resize the browser window to make it large enough, it becomes:
The scroll bar is still there for some unknown reason. Keep the browser window the same size and press F5. After refresh, the page it goes back to the situation in the first image (no scroll bar), so this means the window height is sufficient for the scroll bar to not appear, so overflow-y: auto
should make it disappear automatically but it does not.
Is this a browser bug becuase I can't reproduce this in FireFox? If so, is there a workaround for this?
The header seems to be screwing it up. One solution is to flatten things and move the header up into its own flex item:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Resize bug</title>
</head>
<body>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
</style>
<div style="display: flex; flex-direction: column; max-height: 100vh; width: 400px">
<div style="background-color: aqua;">header</div>
<div style="background-color: aqua; min-height: 0; overflow-y: auto; overflow-x: hidden">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam sagittis eu ex sed faucibus. Nulla
facilisi. Phasellus ac hendrerit libero. Pellentesque nec urna convallis leo aliquet maximus nec
quis erat. Vivamus id congue quam. Nullam fringilla eget nunc tincidunt faucibus. Etiam sit amet
arcu leo. Sed rutrum varius nibh, id vulputate massa laoreet eget. Sed pretium euismod neque et
fermentum. Etiam id orci varius, feugiat ligula sed, interdum est. Donec scelerisque imperdiet odio.
Quisque rutrum ut ligula sit amet tincidunt. Sed in dui tempus, malesuada massa eu, rutrum felis.
Suspendisse potenti. Cras viverra eros massa, vel vulputate sem tincidunt eget. Nulla ac finibus
metus, in tincidunt justo. Donec vehicula mi est, sit amet aliquet libero tincidunt rhoncus. Integer
malesuada accumsan elit sit amet pretium. Morbi malesuada viverra aliquam. Maecenas ultrices ex
ante, non tristique libero molestie sed. Aenean sed venenatis nunc. Maecenas a cursus dolor, ut
maximus diam. In sed lacus urna. Maecenas auctor posuere tempor. Phasellus velit nisl, venenatis
quis suscipit eu, sollicitudin at turpis. Vestibulum facilisis sodales ullamcorper. Mauris blandit
ligula pellentesque mauris rhoncus pellentesque at et quam.
</div>
<div style="background-color: orange; margin-top: 0.25rem">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam sagittis eu ex sed faucibus. Nulla
facilisi. Phasellus ac hendrerit libero. Pellentesque nec urna convallis leo aliquet maximus nec quis
erat. Vivamus id congue quam. Nullam fringilla eget nunc tincidunt faucibus. Etiam sit amet arcu leo.
Sed rutrum varius nibh, id vulputate massa laoreet eget. Sed pretium euismod neque et fermentum. Etiam
id orci varius, feugiat ligula sed, interdum est. Donec scelerisque imperdiet odio. Quisque rutrum ut
ligula sit amet tincidunt. Sed in dui tempus, malesuada massa eu, rutrum felis. Suspendisse potenti.
Cras viverra eros massa, vel vulputate sem tincidunt eget. Nulla ac finibus metus, in tincidunt justo.
Donec vehicula mi est, sit amet aliquet libero tincidunt rhoncus. Integer malesuada accumsan elit sit
amet pretium. Morbi malesuada viverra aliquam. Maecenas ultrices ex ante, non tristique libero molestie
sed. Aenean sed venenatis nunc. Maecenas a cursus dolor, ut maximus diam. In sed lacus urna. Maecenas
auctor posuere tempor. Phasellus velit nisl, venenatis quis suscipit eu, sollicitudin at turpis.
Vestibulum facilisis sodales ullamcorper. Mauris blandit ligula pellentesque mauris rhoncus pellentesque
at et quam. Maecenas congue tortor eget mi lobortis rhoncus. Integer tempus quam quis augue consectetur,
ut varius lacus sollicitudin. Mauris aliquam vestibulum eros, eu gravida massa. Etiam id ipsum a nisl
ultrices fringilla. Etiam convallis ut quam at bibendum. Donec porta leo est, tincidunt dignissim ipsum
dignissim ut. Sed tincidunt arcu non sem aliquet rhoncus. Cras gravida lectus quis nunc efficitur
pellentesque. Nullam tempus mi id mauris ultrices consectetur. Etiam vel tincidunt neque. Ut placerat,
enim condimentum suscipit molestie, sem felis feugiat lectus, a tempor neque nisl sit amet dolor. Donec
egestas nec felis et efficitur. Vivamus pharetra accumsan auctor. Nulla rhoncus dapibus velit eleifend
hendrerit. Sed fermentum fringilla maximus. Suspendisse nisi quam, maximus vel ex nec, commodo ultricies
orci. Morbi ac enim in orci ullamcorper tempus. Cras varius volutpat quam in ullamcorper.
</div>
</div>
</body>
</html>