Jadi saya memiliki masalah yang menurut saya cukup umum tetapi saya belum menemukan solusi yang tepat. Saya ingin membuat penutup div overlay SELURUH halaman ... BUKAN hanya viewport. Saya tidak mengerti mengapa ini sangat sulit dilakukan ... Saya sudah mencoba mengatur body, html heights menjadi 100% dll tetapi itu tidak berhasil. Inilah yang saya miliki sejauh ini:
<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>
Saya juga akan terbuka untuk solusi dalam JavaScript jika ada, tetapi saya lebih suka hanya menggunakan beberapa CSS sederhana.
Jawaban:
Area pandang adalah yang terpenting, tetapi Anda mungkin ingin seluruh situs web tetap digelapkan bahkan saat menggulir. Untuk ini, Anda ingin menggunakan
position:fixed
bukanposition:absolute
. Fixed akan membuat elemen statis di layar saat Anda menggulir, memberikan kesan bahwa seluruh bodi digelapkan.Contoh: 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>
sumber
<select>
elemen di iOS, elemen ini menggerakkan seluruh area pandang dan pada dasarnya merusak semuanya. elemen tetap bergerak, hal-hal yang seharusnya tidak menggulir, dll.body:before { content: " "; width: 100%; height: 100%; position: fixed; z-index: -1; top: 0; left: 0; background: rgba(0, 0, 0, 0.5); }
sumber
Pertama-tama, saya pikir Anda telah salah paham tentang apa itu viewport. Area pandang adalah area yang digunakan browser untuk merender halaman web, dan Anda tidak dapat membangun situs web dengan cara apa pun untuk menimpa area ini dengan cara apa pun.
Kedua, tampaknya alasan overlay-div Anda tidak menutupi keseluruhan viewport adalah karena Anda harus menghapus semua margin pada BODY dan HTML.
Coba tambahkan ini di bagian atas stylesheet Anda - ini menyetel ulang semua margin dan paddings pada semua elemen. Membuat pengembangan lebih lanjut lebih mudah:
* { margin: 0; padding: 0; }
Sunting: Saya baru saja memahami pertanyaan Anda dengan lebih baik.
Position: fixed;
mungkin akan berhasil untuk Anda, seperti yang ditulis oleh Jonathan Sampson.sumber
*{}
dan Anda akan melihat lebih banyak lagi :)Saya mengalami sedikit masalah karena saya tidak ingin MEMPERBAIKI overlay di tempatnya karena saya ingin info di dalam overlay dapat di-scroll di atas teks. Saya menggunakan:
<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>
Tentu saja div di tengah membutuhkan beberapa konten dan mungkin latar belakang abu-abu transparan tapi saya yakin Anda mengerti intinya!
sumber
Saya melihat jawaban Nate Barr di atas, yang sepertinya Anda sukai. Sepertinya tidak jauh berbeda dari yang lebih sederhana
html {background-color: grey}
sumber