Mam więc problem, który moim zdaniem jest dość powszechny, ale nie znalazłem jeszcze dobrego rozwiązania. Chcę, aby nakładka div obejmowała CAŁĄ stronę ... NIE tylko widok. Nie rozumiem, dlaczego jest to takie trudne ... Próbowałem ustawić treść, wysokość html na 100% itp., Ale to nie działa. Oto, co mam do tej pory:
<html>
<head>
<style type="text/css">
.OverLay { position: absolute; z-index: 3; opacity: 0.5; filter: alpha(opacity = 50); top: 0; bottom: 0; left: 0; right: 0; width: 100%; height: 100%; background-color: Black; color: White;}
body { height: 100%; }
html { height: 100%; }
</style>
</head>
<body>
<div style="height: 100%; width: 100%; position: relative;">
<div style="height: 100px; width: 300px; background-color: Red;">
</div>
<div style="height: 230px; width: 9000px; background-color: Green;">
</div>
<div style="height: 900px; width: 200px; background-color: Blue;"></div>
<div class="OverLay">TestTest!</div>
</div>
</body>
</html>
Byłbym również otwarty na rozwiązanie w JavaScript, gdyby takie istniało, ale wolałbym po prostu użyć prostego CSS.
Odpowiedzi:
Liczy się tylko widoczny obszar, ale prawdopodobnie chcesz, aby cała witryna pozostawała zaciemniona nawet podczas przewijania. W tym celu chcesz użyć
position:fixed
zamiastposition:absolute
. Naprawiono utrzymuje element statyczny na ekranie podczas przewijania, sprawiając wrażenie, że całe ciało jest zaciemnione.Przykład: http://jsbin.com/okabo3/edit
div.fadeMe { opacity: 0.5; background: #000; width: 100%; height: 100%; z-index: 10; top: 0; left: 0; position: fixed; }
<body> <div class="fadeMe"></div> <p>A bunch of content here...</p> </body>
źródło
<select>
elementu w iOS przesuwa cały obszar roboczy i zasadniczo wszystko psuje. naprawione elementy się poruszają, rzeczy, które nie powinny się przewijać itp.body:before { content: " "; width: 100%; height: 100%; position: fixed; z-index: -1; top: 0; left: 0; background: rgba(0, 0, 0, 0.5); }
źródło
Po pierwsze, myślę, że źle zrozumiałeś, czym jest widoczny obszar. Rzutnia to obszar, którego przeglądarka używa do renderowania stron internetowych i nie możesz w żaden sposób budować swoich witryn internetowych, aby w jakikolwiek sposób zastąpić ten obszar.
Po drugie, wydaje się, że powodem, dla którego Twój overlay-div nie pokryje całego widocznego obszaru, jest to, że musisz usunąć wszystkie marginesy z BODY i HTML.
Spróbuj dodać to na górze arkusza stylów - resetuje wszystkie marginesy i wypełnienia wszystkich elementów. Ułatwia dalszy rozwój:
* { margin: 0; padding: 0; }
Edycja: po prostu lepiej zrozumiałem twoje pytanie.
Position: fixed;
prawdopodobnie zadziała, jak napisał Jonathan Sampson.źródło
*{}
a zobaczysz o wiele więcej :)Miałem sporo problemów, ponieważ nie chciałem NAPRAWIĆ nakładki na miejscu, ponieważ chciałem, aby informacje wewnątrz nakładki można było przewijać po tekście. Użyłem:
<html style="height=100%"> <body style="position:relative"> <div id="my-awesome-overlay" style="position:absolute; height:100%; width:100%; display: block"> [epic content here] </div> </body> </html>
Oczywiście element div w środku potrzebuje trochę treści i prawdopodobnie przezroczystego szarego tła, ale jestem pewien, że rozumiesz sedno!
źródło
Spojrzałem na odpowiedź Nate'a Barra powyżej, która wydawała się ci się podobać. Nie wydaje się to zbytnio różnić od prostszego
html {background-color: grey}
źródło