¿Cómo detectar la orientación del dispositivo mediante consultas de medios CSS?

Resuelto Francesco asked hace 13 años • 7 respuestas

En JavaScript, el modo de orientación se puede detectar usando:

if (window.innerHeight > window.innerWidth) {
    portrait = true;
} else {
    portrait = false;
}

Sin embargo, ¿hay alguna forma de detectar la orientación utilizando CSS únicamente?

P.ej. algo como:

@media only screen and (width > height) { ... }
Francesco avatar Apr 21 '11 02:04 Francesco
Aceptado

CSS para detectar la orientación de la pantalla:

 @media screen and (orientation:portrait) { … }
 @media screen and (orientation:landscape) { … }

La definición CSS de una consulta de medios se encuentra en http://www.w3.org/TR/css3-mediaqueries/#orientation

Richard Schneider avatar Apr 20 '2011 19:04 Richard Schneider
@media all and (orientation:portrait) {
/* Style adjustments for portrait mode goes here */
}

@media all and (orientation:landscape) {
  /* Style adjustments for landscape mode goes here */
}

pero todavía parece que tienes que experimentar

mistagrooves avatar Apr 20 '2011 19:04 mistagrooves

Creo que necesitamos escribir una consulta de medios más específica. Asegúrese de que si escribe una consulta de medios no debería afectar a otra vista (Mob, Tab, Desk); de lo contrario, puede causar problemas. Me gustaría sugerir escribir una consulta de medios básica para el dispositivo respectivo que cubra tanto la vista como una consulta de medios de orientación. Puede especificar más código sobre la vista de orientación para una buena práctica. No es necesario escribir ambas consultas de orientación de medios al mismo tiempo. Puede consultar mi siguiente ejemplo. Lo siento si mi escritura en inglés no es muy buena. Ex:

Para móvil

@media screen and (max-width:767px) {

..This is basic media query for respective device.In to this media query  CSS code cover the both view landscape and portrait view.

}


@media screen and (min-width:320px) and (max-width:767px) and (orientation:landscape) {


..This orientation media query. In to this orientation media query you can specify more about CSS code for landscape view.

}

Para tableta

@media screen and (max-width:1024px){
..This is basic media query for respective device.In to this media query  CSS code cover the both view landscape and portrait view.
}
@media screen and (min-width:768px) and (max-width:1024px) and (orientation:landscape){

..This orientation media query. In to this orientation media query you can specify more about CSS code for landscape view.

}

Escritorio

haga según sus requisitos de diseño disfrute...(:

Gracias, Jitu

jitu avatar Jul 30 '2015 07:07 jitu

Yo optaría por la relación de aspecto, ofrece muchas más posibilidades.

/* Exact aspect ratio */
@media (aspect-ratio: 2/1) {
    ...
}

/* Minimum aspect ratio */
@media (min-aspect-ratio: 16/9) {
    ...
}

/* Maximum aspect ratio */
@media (max-aspect-ratio: 8/5) {
    ...
}

Tanto la orientación como la relación de aspecto dependen del tamaño real de la ventana gráfica y no tienen nada que ver con la orientación del dispositivo en sí.

Leer más: https://dev.to/ananyaneogi/useful-css-media-query-features-o7f

BastianBalthasarBux avatar Sep 12 '2019 13:09 BastianBalthasarBux