2012-09-04 17 views
21

Tengo una tableta Google Nexus 7 que estoy usando para probar algunos diseños receptivos. En Javascript, el screen.width regresa como 800px, como se esperaba (la resolución nativa).Nexus 7 screen.width devuelve 800 pero media query max-width: 720px todavía se aplica

¿Cómo es que la tableta detecta la siguiente consulta cuando el ancho máximo de la pantalla es> 720px?

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

Me parece bien - ¿ha intentado hacer esto en un jsfiddle, sin otras influencias? ¿Todavía se aplica? – zenkaty

+0

ésos pueden ayudarle 'http: // css-tricks.com/forums/discussion/17586/media-queries-with-identical-width/p1' –

Respuesta

42

Android hace una escala de densidad objetivo para acomodar las densidades de pantalla variables del ecosistema de Android. El navegador Android apunta a una densidad de pantalla media por defecto, tratando de emular el tamaño de los elementos como si la pantalla fuera una pantalla MDPI.

Usando this website, se puede ver que el resultado de esta escala es que device-width es 601 px y device-height es 880 px en el Nexus 7. Por lo tanto, cae dentro de su declaración max-width: 720px y el fondo aparece de color rojo.

Screenshot

window.screen.width y .height siempre devuelve el tamaño de la pantalla real. Debe recordar que Viewport Size y Screen Size son dos cosas completamente distintas.

Si no desea este comportamiento, puede agregar target-densitydpi=device-dpi a su etiqueta <meta name="viewport">. Esto desactivará la escala de densidad de destino de Android: device-width y device-height informarán la resolución de pantalla nativa del dispositivo.

Más información acerca de la escala de densidad de destino de Android está disponible en el Android Developers' Documentation.

+2

Estoy confundido en la nomenclatura aquí ... En el 'response.js', el sitio de arriba, enumera los atributos de JavaScript de' viewport width', 'device width' y' document width'. En css, ¿la consulta de medios 'device-width' está mirando el equivalente de JavaScript de' viewport width'? ¿Por qué no se los llama lo mismo? –

+1

El soporte para 'target-densitydpi' se eliminó de Webkit, consulte http://trac.webkit.org/changeset/119527 y una explicación aquí: https://petelepage.com/blog/2013/02/viewport-target- densitydpi-support-is-being-deprecated/ –

+1

@VolkerE .: Las nuevas versiones (4.4+) de Android ya no usan ** Webkit **. Cambiado al fork de Webkit de Google: [Blink] (http://www.chromium.org/blink). 'target-densitydpi' todavía es compatible con todos los dispositivos Android ahora y para el futuro. Las versiones anteriores de Android (4.3 y anteriores) están usando una versión anterior de Webkit con 'target-densitydpi' todavía disponible. –

Cuestiones relacionadas