Izinkan div menutupi seluruh halaman, bukan area di dalam penampung

93

Saya mencoba membuat div semi-transparan menutupi seluruh layar. Saya mencoba ini:

#dimScreen
{
    width: 100%;
    height: 100%;
    background:rgba(255,255,255,0.5);
}

Tapi itu tidak mencakup keseluruhan layar, itu hanya mencakup area di dalam div.

Berair
sumber
4
Tambahkanposition: absolute; top: 0; left: 0;
Sergiu Paraschiv
Apakah ada pembaruan untuk CSS3 atau ekstensi apa pun yang mereka miliki saat ini?
William Entriken

Jawaban:

178

Tambahkan position:fixed. Kemudian penutup dipasang di seluruh layar, juga saat Anda menggulir.
Dan tambahkan mungkin juga margin: 0; padding:0;agar tidak ada ruang di sekitar sampul.

#dimScreen
{
    position:fixed;
    padding:0;
    margin:0;

    top:0;
    left:0;

    width: 100%;
    height: 100%;
    background:rgba(255,255,255,0.5);
}

Dan jika seharusnya tidak menempel di layar, gunakan position:absolute;

Trik CSS juga memiliki artikel menarik tentang properti layar penuh.

Sunting:
Baru saja menemukan jawaban ini, jadi saya ingin menambahkan beberapa hal tambahan.
Seperti yang disebutkan Daniel Allen Langdon dalam komentarnya, tambahkan top:0; left:0;untuk memastikan, sampulnya menempel di bagian paling atas dan kiri layar.

Jika Anda beberapa elemen berada di bagian atas sampul (jadi tidak menutupi semuanya), tambahkan z-index. Semakin tinggi angkanya, semakin banyak level yang dicakupnya.

Michael Schmidt
sumber
1
Dalam pengalaman saya, saya juga membutuhkantop: 0; left: 0;
Vivian River
Saya selalu berjuang dengan posisi absolut dengan ini, tetapi menggunakan posisi tetap bekerja lebih baik. Terima kasih
BrianLegg
2
Rupanya ada masalah: jika posisi: elemen tetap memiliki leluhur dengan transformasi css, maka itu akan diperbaiki relatif terhadap leluhur itu, bukan viewport. developer.mozilla.org/en-US/docs/Web/CSS/position#Values
mpoisot
19

Anda perlu mengatur elemen induk untuk 100%juga

html, body {
    height: 100%;
}

Demo (Mengubahbackgrounduntuk tujuan demo)


Juga, ketika Anda ingin menutupi seluruh layar, sepertinya Anda ingin dim, jadi dalam hal ini, Anda perlu menggunakanposition: fixed;

#dimScreen {
    width: 100%;
    height: 100%;
    background:rgba(255,255,255,0.5); 
    position: fixed;
    top: 0;
    left: 0;
    z-index: 100; /* Just to keep it at the very top */
}

Jika itu masalahnya, maka Anda tidak perlu html, body {height: 100%;}

Demo 2

Tuan Alien
sumber
2
Mungkin ada orang tua yang pernah position:relative. Itu tidak akan bekerja. Sarankan position:fixedsaja.
Muhammad Talha Akbar
@MuhammadTalhaAkbar Oh begitu, sudah menjawab itu, saya pikir saya harus menghapus jawaban saya
Mr. Alien
Lebih baik daripada yang lain jika Anda mengubahnya sedikit.
Muhammad Talha Akbar
13

Ini akan berhasil!

div {
  height: 100vh;
  width: 100vw;
}
Conner Frey
sumber
Saya sangat suka ini karena pendek dan bersih.
Puremonk
7

Menggunakan position:fixed cara ini div Anda akan tetap berada di seluruh area yang dapat dilihat secara terus menerus ..

berikan kelas div Anda overlaydan buat aturan berikut di CSS Anda

.overlay{
    opacity:0.8;
    background-color:#ccc;
    position:fixed;
    width:100%;
    height:100%;
    top:0px;
    left:0px;
    z-index:1000;
}

Demo: http://www.jsfiddle.net/TtL7R/1/


sumber
2
#dimScreen{
 position:fixed;
 top:0px;
 left:0px;
 width:100%;
 height:100%;
}
tabone
sumber
1

Coba ini

#dimScreen {
    width: 100%;
    height: 100%;
    background:rgba(255,255,255,0.5);
    position: fixed;
    top: 0;
    left: 0;
}
Vladislav Stanic
sumber
1

Terapkan css-reset untuk mengatur ulang semua margin dan bantalan seperti ini

/* http://meyerweb.com/eric/tools/css/reset/ 

v2.0 | Lisensi 20110126: tidak ada (domain publik) * /

html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed, 
figure, figcaption, footer, header, hgroup, 
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
margin: 0;
padding: 0;
border: 0;
font-size: 100%;
font: inherit;
vertical-align: baseline;
}
/* HTML5 display-role reset for older browsers */
article, aside, details, figcaption, figure, 
footer, header, hgroup, menu, nav, section {
display: block;
}
body {
line-height: 1;
}
ol, ul {
list-style: none;
}
blockquote, q {
quotes: none;
}
blockquote:before, blockquote:after,
q:before, q:after {
content: '';
content: none;
}
table {
border-collapse: collapse;
border-spacing: 0;
}

Anda dapat menggunakan berbagai css-reset sesuai kebutuhan, normal dan gunakan di css

 html
 {
  margin: 0px;
 padding: 0px;
 }

body
{
margin: 0px;
padding: 0px;
}
Vinay Pratap Singh
sumber
2
Bagaimana ini relevan?
akauppi
0

Setel tag html dan tubuh heightke 100%dan hapus margin di sekitar tubuh:

html, body {
    height: 100%;
    margin: 0px; /* Remove the margin around the body */
}

Sekarang setel positiondiv Anda ke fixed:

#dimScreen
{
    width: 100%;
    height: 100%;
    background:rgba(255,255,255,0.5);

    position: fixed;
    top: 0px;
    left: 0px;

    z-index: 1000; /* Now the div will be on top */
}

Demo: http://jsfiddle.net/F3LHW/

Vlabs
sumber
0

silahkan coba dengan setting margin dan padding ke 0 pada body.

<body style="margin: 0 0 0 0; padding: 0 0 0 0;">
Devendra Patel
sumber