2012-09-04 7 views
21

Ho un tablet Google Nexus 7 che sto usando per testare alcuni progetti reattivi. In Javascript, lo screen.width restituisce 800px come previsto (la risoluzione nativa).Nexus 7 screen.width restituisce 800 ma media query max-width: 720px si applica ancora

Come mai la seguente media query viene rilevata dal tablet quando la larghezza massima dello schermo è> 720px?

@media only screen and (max-width: 720px) and (orientation: portrait) { 
    .test{ background: red;} 
} 
+0

Mi sembra giusto - hai provato a farlo su un jsfiddle, senza altre influenze? Si applica ancora? – zenkaty

+0

thos potrebbe aiutarti 'http: // css-tricks.com/forums/discussion/17586/media-query-con-identico-larghezza/p1' –

risposta

42

Android esegue il ridimensionamento della densità del target per adattarsi alle diverse densità dello schermo dell'ecosistema Android. Per impostazione predefinita, il browser Android ha come target una densità media dello schermo, cercando di emulare la dimensione degli elementi come se lo schermo fosse uno schermo MDPI.

Utilizzando this website, si può vedere che il risultato di questa scala è che device-width è 601 px e device-height è 880 px sul Nexus 7. Pertanto, rientra nel tuo dichiarazione max-width: 720px e lo sfondo appare rossa.

Screenshot

window.screen.width e .height restituisce sempre la dimensione effettiva dello schermo. È necessario ricordare che le dimensioni dello Viewport e le dimensioni dello schermo sono due cose completamente diverse.

Se non si desidera questo comportamento, è possibile aggiungere target-densitydpi=device-dpi al tag <meta name="viewport">. Questo disabiliterà il ridimensionamento della densità target Android: device-width e device-height segnalerà la risoluzione nativa dello schermo del dispositivo.

Ulteriori informazioni sul ridimensionamento della densità di destinazione di Android sono disponibili nello Android Developers' Documentation.

+2

Sono un grande confuso sulla nomenclatura qui ... Nel Il sito 'response.js' qui sopra, elenca gli attributi JavaScript di' viewport width', 'device width' e' document width'. In css, la query multimediale 'device-width' sta esaminando l'equivalente JavaScript di' viewport width'? Perché non hanno chiamato la stessa cosa? –

+1

Il supporto per 'target-densitydpi' è stato rimosso da Webkit, vedere http://trac.webkit.org/changeset/119527 e una spiegazione qui: https://petelepage.com/blog/2013/02/viewport-target- densitydpi-support-is-being-deprecated/ –

+1

@VolkerE .: Le nuove versioni (4.4+) di Android non utilizzano più ** Webkit **. Passato al fork di Webkit di Google: [Blink] (http://www.chromium.org/blink). 'target-densitydpi' è ancora supportato su tutti i dispositivi Android ora e per il futuro. Versioni precedenti di Android (4.3 e precedenti) utilizzano una versione precedente di Webkit con 'target-densitydpi' ancora disponibile. –