ChatGPT解决这个技术问题 Extra ChatGPT

CSS: How to get this overlay to extend 100% with scrolling?

Here is an example of the issue in question:

http://dev.madebysabotage.com/playground/overlay.html

You see there is a gray overlay over the entire page, but if you scroll down, the content below the initial loaded page doesn't have the overlay.

I have an #overlay div and it seems it doesn't keep the 100% height during scrolling, so trying to figure out how to pull that off.

Here's the full source:

html { height: 100%; min-height: 100%; } body { height: 100%; min-height: 100%; font-family: Georgia, sans-serif; } #overlay { background: rgba(0, 0, 0, 0.4); width: 100%; height: 100%; min-height: 100%; position: absolute; top: 0; left: 0; z-index: 10000; } header, section, footer { width: 800px; margin: 0 auto 20px auto; padding: 20px; background: #ff0; } section { min-height: 1500px; }

Header

Here's some sweet content

Here's my footer

Thanks for this! For anyone else reading, the problem is fixed at the link above. To recreate it use Firebug or similar to remove position:fixed; from the overlay id :)
3yrs later and I have a same problem :) +1 for question

V
Vivek

position: fixed; on the overlay.


You note that fixed positions is not supported in IE6. But considering the fact you are using rgba values, I guess you do not care about IE at all. :p
who does? ;) (we all should really) ha
Okay, now what about tablets and mobile devices?
8yrs later - Add "overflow: hidden;" to body when overlay is opened to avoid double scroll bar in some browsers.
What if the overlay is not relative to the body, but for some child element which has scrolling?
B
BadHorsie

Change #overlay position:absolute to position:fixed


T
Thom

This happens because the #overlay position: absolute is relative to the <html> and using it's dimensions, which is only the viewport height.

To make sure that the #overlay uses the dimensions of whole page, you could use position: relative; on the <body> (but you will need to remove the min-height: 100% and height: 100% on the <body> first because this makes it use the viewport size). The #overlay will then use the <body> dimensions and fill the entire page.