2012-02-09 7 views
6

Ya he leído casi todas las preguntas de stackoverflow relacionadas con este problema, pero nada funciona como esperaba.Una consulta de medios confiable para detectar solo iPad (o en el mejor de 1024x768 dispositivos móviles)

Se preguntó a mí para detectar sólo el dispositivo iPad (o, en el mejor ~ 1024x768 móvil dispositivo) con una consulta de medios. He intentado utilizar

@media screen 
     and (min-device-width: 768px) 
     and (max-device-width: 1024px) { 
    ... 
} 

pero esta consulta medio de impresión satisfaga también Chrome (y Safari, supongo) en los ordenadores portátiles y de escritorio Win32/MacOS cuando la resolución está ajustada a 1024x768 (pero no en Firefox). Intenté esta consulta de medios definiendo orientation:portrait y orientation:landscape pero sin suerte. También se reconoce en el navegador webkit de escritorio.

Puede probar this fiddle para probar el problema.

Después de buscar vine a this interesting article en que aparece

Creo Safari (y los otros navegadores WebKit que he probado en) no están siguiendo la especificación, mientras que Firefox y Opera son.

La función de medios de 'ancho' describe el ancho del área de visualización de destino del dispositivo de salida. Para medios continuos, este es el ancho de la ventana gráfica (como se describe en CSS2, sección 9.1.1 [CSS21]), incluido el tamaño de una barra de desplazamiento representada (si existe).

así que probamos este (fiddle) con 1009px como max-device-width (1024-15)

@media screen and (min-device-width: 768px) 
       and (max-device-width: 1009px) { 
    ... 
} 

y no funciona
pero si uso esta consulta medios de comunicación también definir la orientación (fiddle)

@media screen and (device-width:768px) and (orientation:portrait), 
     screen and (device-width:1009px) and (orientation:landscape) { 
    ... 
} 

sorprendente (para mí) que parece funcionar correctamente y parece coincidir solo con safari/iPad.

Q: ¿esta consulta de medios es lo suficientemente confiable para mi necesidad? ¿Funciona siempre en iPad/iPad2? ¿O debo esperar algunos casos extremos y una coincidencia inesperada con alguna otra resolución de dispositivo? En tal caso, ¿puede sugerir una consulta de medios más eficiente y confiable?

que :) Gracias (y perdón por el nivel de detalle)

+0

¿Cuál es el objetivo exacto? P.ej. habrá un iPad 3 el próximo mes más o menos, con una resolución de pantalla diferente. Y sí, espero que otras tabletas coincidan también. – Lennart

+1

El propósito exacto es principalmente combinar ipad/ipad2. Sé que esto no tiene mucho sentido en términos de RWD (¿cuál es la diferencia entre un móvil y un escritorio de 1024x768? Deberían considerarse lo mismo en mi humilde opinión) pero como me pidieron que lo haga en puro CSS, me gustaría lograr esto, si es posible, por supuesto. – fcalderan

+0

¿Está tratando de hacer un sitio amigable para iPad? Si ese es el caso, sería mejor hacer que el sitio 'toque' amigable para todos los dispositivos y en ese caso puede usar bibliotecas como modernizr para olfatear si el dispositivo admite eventos táctiles (para que pueda cambiar qué archivo css se procesa en javascript) – Skuld

Respuesta

4

trata de leer el agente de usuario también. Esto tendrá que hacerse en algo más que CSS, pero resolverá su problema. De esta forma puedes ver si es un iPad o no.

Cosas como esta están destinadas a romperse, mejor prevenir que lamentar y usar algo que funcione.

1

La solución es no solo coincidir con el ancho del dispositivo pero altura también.

Solo funcionará si se combina perfectamente.

Eche un vistazo a this respuesta para una discusión más en profundidad.

Cuestiones relacionadas