Qual è la differenza tra max-device-width e max-width per il Web mobile?


242

Devo sviluppare alcune pagine HTML per telefoni iPhone / Android, ma qual è la differenza tra max-device-widthe max-width? Ho bisogno di usare diversi CSS per diverse dimensioni dello schermo.

@media all and (max-device-width: 400px)

@media all and (max-width: 400px)

Qual è la differenza?



1
Ho scoperto che max-device-widthfunziona anche se il <meta name="viewport" ...>tag non è incluso per i dispositivi a schermo piccolo e max-widthnon funziona senza un metatag
— Faizan Akram Dar

Risposte:


252

max-width è la larghezza dell'area di visualizzazione di destinazione, ad esempio il browser

max-device-width è la larghezza dell'intera area di rendering del dispositivo, ovvero la schermata del dispositivo reale

Lo stesso vale per max-heighte max-device-heightnaturalmente.


15
Se si desidera visualizzare la modifica durante il ridimensionamento del browser, utilizzare la larghezza massima per lo sviluppo, sebbene la larghezza massima del dispositivo sia più accurata per la produzione.
— John Magnolia,

31
@JohnMagnolia Cosa ti fa pensare che la larghezza massima del dispositivo sia migliore per la produzione? La larghezza massima non garantirebbe una migliore reattività, indipendentemente dal dispositivo?
— e_nown

8
@Sconosciuto sono d'accordo. Gli utenti di tutto lo spettro di abilità / conoscenze non sempre hanno la finestra del browser desktop ingrandita (ma non ho ancora visto un tablet o un telefono che non ha un browser NON massimizzato - suppongo che sia possibile in un'app ibrida, ma che è un caso diverso). La larghezza massima sarebbe sicuramente più universale.
— Jason,

2
@Sconosciuto non sono d'accordo. A seconda dei tuoi stili, potresti avere un aspetto molto diverso dopo aver colpito quel punto di interruzione multimediale e se stai caricando fogli di stile basati su punti di interruzione multimediali, il sito può assumere un aspetto completamente diverso quando ridimensiona la finestra del browser.
— TwinPrimesAreEz

2
Se hai un layout radicalmente diverso per i dispositivi mobili, probabilmente il motivo fondamentale è perché non c'è il cursore del mouse (hanno bisogno di pulsanti più grandi e una singola colonna per scorrere). Una grande query multimediale da utilizzare in quel caso è @media screen and (pointer: coarse) and (hover: none)che passerà alla versione mobile indipendentemente da quanti pixel i dispositivi mobili comprenderanno nei loro schermi in futuro.
— EoghanM,

81

max-widthsi riferisce alla larghezza del riquadro di visualizzazione e può essere utilizzato per indirizzare dimensioni o orientamenti specifici in combinazione con max-height. Utilizzando più max-width(o min-width) condizioni è possibile modificare lo stile della pagina quando il browser viene ridimensionato o l'orientamento cambia su un dispositivo come un iPhone.

max-device-widthsi riferisce alle dimensioni del riquadro di visualizzazione del dispositivo indipendentemente dall'orientamento, dalla scala corrente o dal ridimensionamento. Questo non cambierà su un dispositivo, quindi non può essere utilizzato per cambiare fogli di stile o direttive CSS poiché lo schermo viene ruotato o ridimensionato.


11
Questa risposta mi ha fatto "fare clic" per me meglio della risposta accettata. Sembra che per la maggior parte delle applicazioni, max-widthe max-heightsaranno quelle da usare.
— hotshot309

2
@JackieChiles fa un buon punto in un altro thread SO che si dovrebbe prendere in considerazione (per quanto riguarda gli stili mobili che appaiono su dispositivi più grandi): stackoverflow.com/questions/8564752/...
— hotshot309

5
Questa buona risposta non è completa: l'orientamento scambia la larghezza e l'altezza del dispositivo su Android ma non su iOS: vedi quirksmode.org/blog/archives/2010/04/the_orientation.html .

16

Cosa ne pensi dell'utilizzo di questo stile?

Per tutti i punti di interruzione che sono principalmente per "dispositivo mobile" che uso min(max)-device-widthe per i punti di interruzione che sono principalmente per uso "desktop" min(max)-width.

Esistono molti "dispositivi mobili" che calcolano male la larghezza.

Guarda http://www.javascriptkit.com/dhtmltutors/cssmediaqueries2.shtml :

/* #### Mobile Phones Portrait #### */
@media screen and (max-device-width: 480px) and (orientation: portrait){
  /* some CSS here */
}

/* #### Mobile Phones Landscape #### */
@media screen and (max-device-width: 640px) and (orientation: landscape){
  /* some CSS here */
}

/* #### Mobile Phones Portrait or Landscape #### */
@media screen and (max-device-width: 640px){
  /* some CSS here */
}

/* #### iPhone 4+ Portrait or Landscape #### */
@media screen and (max-device-width: 480px) and (-webkit-min-device-pixel-ratio: 2){
  /* some CSS here */
}

/* #### Tablets Portrait or Landscape #### */
@media screen and (min-device-width: 768px) and (max-device-width: 1024px){
  /* some CSS here */
}

/* #### Desktops #### */
@media screen and (min-width: 1024px){
  /* some CSS here */
}

Non risponde alla domanda ed è in realtà un brutto modo di lavorare sui tuoi punti di interruzione - Stai attento.
— Quaranta

8

max-device-width è la larghezza di rendering del dispositivo

@media all and (max-device-width: 400px) {
    /* styles for devices with a maximum width of 400px and less
       Changes only on device orientation */
}

@media all and (max-width: 400px) {
    /* styles for target area with a maximum width of 400px and less
       Changes on device orientation , browser resize */
}

La larghezza massima è la larghezza dell'area di visualizzazione di destinazione indica la dimensione corrente del browser.


2
@media all e (larghezza massima: 400px) {} Qual è la differenza
— virsir

5

la differenza è che la larghezza massima del dispositivo è la larghezza di tutto lo schermo e la larghezza massima indica lo spazio utilizzato dal browser per mostrare le pagine. Ma un'altra importante differenza è il supporto dei browser Android, infatti se utilizzerai max-device-width funzionerà solo in Opera, invece sono sicuro che max-width funzionerà per ogni tipo di browser mobile ( L'ho provato su Chrome, Firefox e Opera per ANDROID).


5

max-width è la larghezza dell'area di visualizzazione di destinazione, ad esempio il browser; max-device-width è la larghezza dell'intera area di rendering del dispositivo, ovvero la schermata del dispositivo reale.

• Se si utilizza la larghezza massima del dispositivo , quando si modificano le dimensioni della finestra del browser sul desktop, lo stile CSS non cambierà in impostazioni di query multimediali diverse;

• Se si utilizza la larghezza massima , quando si modificano le dimensioni del browser sul desktop, il CSS cambierà in diverse impostazioni di media query e potrebbe essere mostrato con lo stile per i cellulari, come i menu touch-friendly.


3

Se stai realizzando un'app multipiattaforma (ad es. Utilizzando phonegap / cordova),

Non utilizzare la larghezza del dispositivo o l'altezza del dispositivo. Usa piuttosto la larghezza o l'altezza nelle query multimediali CSS perché i dispositivi Android daranno problemi in larghezza o altezza del dispositivo. Per iOS funziona benissimo. Solo i dispositivi Android non supportano larghezza dispositivo / altezza dispositivo.


2

Non utilizzare più larghezza / altezza del dispositivo.

larghezza dispositivo, altezza dispositivo e rapporto aspetto-dispositivo sono deprecati in Media Query Livello 4: https://developer.mozilla.org/en-US/docs/Web/CSS/@media#Media_features

Usa semplicemente larghezza / altezza (senza min / max) in combinazione con orientamento e risoluzione (min / max-) per indirizzare dispositivi specifici. Su mobile larghezza / altezza dovrebbe essere uguale a larghezza / altezza del dispositivo.


Gli elementi "device-xxx" semplici sono obsoleti, gli elementi "max-device-xxx" NON sono obsoleti.
— Roger Krueger,

1
@RogerKrueger Ne sei sicuro? Non vedo nulla per indicare che le query multimediali max-device-xxx non sono obsolete.
— Jonny Cook,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.