Elaborando risposta di Ryan, senza aggiungere alcuna nuova html
nodo o utilizzando @media
query, utilizzando un solo css.
Se si desidera mantenere un dimensioni fixed
sfondo cover
su tutti i dispositivi, tra cui iOS, senza l'aggiunta di un nuovo nodo, quindi il trucco è quello di fare il posizionamento fisso sull'elemento (corpo) sé e non la sfondo, dal momento che uno sfondo fisso e un ridimensionamento della copertura incasina iOS.
Funziona in produzione come un fascino su iOS così: https://www.doklist.com/
Questo codice non funziona, dal momento che iOS utilizza l'altezza del document
e non il viewport
:
body {
background: url(https://www.w3schools.com/css/trolltunga.jpg) no-repeat center center fixed;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
}
Ora questa è la magia, il body:after
è fisso e lo non è lo
body:after{
content:"";
position:fixed; /* stretch a fixed position to the whole screen */
top:0;
height:100vh; /* fix for mobile browser address bar appearing disappearing */
left:0;
right:0;
z-index:-1; /* needed to keep in the background */
background: url(https://www.w3schools.com/css/trolltunga.jpg) center center;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
}
avrei potuto usare il corpo stessa, con "position: fixed; trabocco-y: scroll", ma non ho voglia di pasticciare con il posizionamento del corpo e il mio layout generale .
Così facendo sul corpo : dopo è una soluzione molto semplice. Ho testato la soluzione su Mac e iOS con Firefox, Safari, Chrome.
Ho anche creato un repo github con 2 esempi di questo: https://github.com/thesved/fixed-cover-background
fonte
2017-03-28 00:08:07
La
'' soluzione lavorato per me da Ryan e la risposta di Roko. Tuttavia, invece di aggiungere 'position: absolute' al blocco CSS, ho aggiunto questa riga in basso e ho funzionato alla grande:> min-height: 100vh; –