Tutte queste risposte sopra elencate, che usano max-device-width
o max-device-height
per le query sui media, soffrono di un bug molto forte: colpiscono anche molti altri popolari dispositivi mobili (probabilmente indesiderati e mai testati, o che arriveranno sul mercato in futuro).
Queste query funzioneranno per qualsiasi dispositivo che abbia uno schermo più piccolo e probabilmente il tuo design verrà interrotto.
In combinazione con query multimediali simili a dispositivi specifici (per HTC, Samsung, IPod, Nexus ...) questa pratica lancerà una bomba a orologeria. Per debigging, questa idea può rendere il tuo CSS uno spagetti incontrollato. Non puoi mai testare tutti i possibili dispositivi.
Tieni presente che l'unica media query rivolta sempre a IPhone5 e nient'altro è:
/* iPhone 5 Retina regardless of IOS version */
@media (device-height : 568px)
and (device-width : 320px)
and (-webkit-min-device-pixel-ratio: 2)
/* and (orientation : todo: you can add orientation or delete this comment)*/ {
/*IPhone 5 only CSS here*/
}
Si noti che esatto larghezza e l'altezza , non la larghezza massima sono controllate qui.
Ora, qual è la soluzione? Se vuoi scrivere una pagina web che avrà un bell'aspetto su tutti i possibili dispositivi, la migliore pratica è usare il degrado
/ * modello di degrado stiamo verificando la larghezza dello schermo solo sicuro, questo cambierà passando da verticale a orizzontale * /
/*css for desktops here*/
@media (max-device-width: 1024px) {
/*IPad portrait AND netbooks, AND anything with smaller screen*/
/*make the design flexible if possible */
/*Structure your code thinking about all devices that go below*/
}
@media (max-device-width: 640px) {
/*Iphone portrait and smaller*/
}
@media (max-device-width: 540px) {
/*Smaller and smaller...*/
}
@media (max-device-width: 320px) {
/*IPhone portrait and smaller. You can probably stop on 320px*/
}
Se oltre il 30% dei visitatori del tuo sito Web proviene da dispositivi mobili, capovolgi questo schema, fornendo un approccio mobile-first. Utilizzare min-device-width
in tal caso. Ciò accelererà il rendering delle pagine Web per i browser mobili.