Ich habe also ein Problem, von dem ich denke, dass es ziemlich häufig ist, aber ich habe noch keine gute Lösung dafür gefunden. Ich möchte, dass ein Overlay-Div die GESAMTE Seite abdeckt ... NICHT nur das Ansichtsfenster. Ich verstehe nicht, warum das so schwer zu tun ist ... Ich habe versucht, Körper-, HTML-Höhen auf 100% usw. einzustellen, aber das funktioniert nicht. Folgendes habe ich bisher:
<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>
Ich wäre auch offen für eine Lösung in JavaScript, falls es eine gibt, aber ich würde viel lieber nur ein einfaches CSS verwenden.
Antworten:
Das Ansichtsfenster ist alles, was zählt, aber Sie möchten wahrscheinlich, dass die gesamte Website auch beim Scrollen dunkel bleibt. Hierfür möchten Sie
position:fixed
statt verwendenposition:absolute
. Behoben hält das Element beim Scrollen statisch auf dem Bildschirm und vermittelt den Eindruck, dass der gesamte Körper abgedunkelt ist.Beispiel: http://jsbin.com/okabo3/edit
quelle
<select>
Element in iOS das gesamte Ansichtsfenster verschoben wird und im Grunde alles kaputt geht. Feste Elemente bewegen sich, Dinge, die nicht scrollen sollten, scrollen usw.quelle
Zunächst einmal denke ich, dass Sie das Ansichtsfenster falsch verstanden haben. Das Ansichtsfenster ist der Bereich, den ein Browser zum Rendern von Webseiten verwendet, und Sie können Ihre Websites in keiner Weise erstellen, um diesen Bereich in irgendeiner Weise zu überschreiben.
Zweitens scheint der Grund dafür, dass Ihr Overlay-Div nicht das gesamte Ansichtsfenster abdeckt, darin zu liegen, dass Sie alle Ränder in BODY und HTML entfernen müssen.
Versuchen Sie, dies oben in Ihrem Stylesheet hinzuzufügen - es setzt alle Ränder und Auffüllungen aller Elemente zurück. Erleichtert die weitere Entwicklung:
Edit: Ich habe deine Frage gerade besser verstanden.
Position: fixed;
wird wahrscheinlich für Sie klappen, wie Jonathan Sampson geschrieben hat.quelle
*{}
und Sie werden viel mehr sehen :)Ich hatte einige Probleme, da ich das Overlay nicht fixieren wollte, da die Informationen im Overlay über den Text gescrollt werden sollten. Ich benutzte:
Natürlich braucht der Div in der Mitte etwas Inhalt und wahrscheinlich einen transparenten grauen Hintergrund, aber ich bin sicher, Sie verstehen das Wesentliche!
quelle
Ich habe mir oben Nate Barrs Antwort angesehen, die Ihnen zu gefallen schien. Es scheint nicht sehr anders zu sein als das einfachere
quelle