Diseño web responsive -Media queries
Las media queries se introdujeron en CSS3:Consulta @media en CSS3。
Usando consultas @media, puedes definir diferentes estilos para diferentes tipos de medios.
Ejemplos
Si la ventana del navegador es menor que 500px, el fondo se volverá azul claro:
body {
background-color: lightblue;
}
}
Pruébalo »
Agregar puntos de interrupción
En el tutorial anterior usamos filas y columnas para hacer páginas web, que son responsive, pero no se muestran de forma amigable en pantallas pequeñas.
Las media queries pueden ayudarnos a resolver este problema. Podemos agregar puntos de interrupción en el diseño; cada punto de interrupción tiene un efecto distinto.
Escritorio
Dispositivos móviles
Usa media queries para agregar un punto de interrupción en 768px:
Ejemplos
Cuando la pantalla (ventana del navegador) sea menor que 768px, el ancho de cada columna será del 100%:
.col-1 {width: 8.33%;}
.col-2 {width: 16.66%;}
.col-3 {width: 25%;}
.col-4 {width: 33.33%;}
.col-5 {width: 41.66%;}
.col-6 {width: 50%;}
.col-7 {width: 58.33%;}
.col-8 {width: 66.66%;}
.col-9 {width: 75%;}
.col-10 {width: 83.33%;}
.col-11 {width: 91.66%;}
.col-12 {width: 100%;}
@media only screen and (max-width: 768px) {
/* For mobile phones: */
[class*="col-"] {
width: 100%;
}
}
Pruébalo »
Diseño mobile-first
El diseño mobile-first significa que se prioriza el diseño móvil al diseñar para escritorio y otros dispositivos.
Esto significa que debemos hacer algunos cambios en el CSS.
Modificamos los estilos cuando la pantalla es menor que 768px, y también cuando el ancho de la pantalla es mayor que 768px. A continuación se muestra un ejemplo de diseño mobile-first:
[class*="col-"] {
width: 100%;
}
@media only screen and (min-width: 768px) {
/* For desktop: */
.col-1 {width: 8.33%;}
.col-2 {width: 16.66%;}
.col-3 {width: 25%;}
.col-4 {width: 33.33%;}
.col-5 {width: 41.66%;}
.col-6 {width: 50%;}
.col-7 {width: 58.33%;}
.col-8 {width: 66.66%;}
.col-9 {width: 75%;}
.col-10 {width: 83.33%;}
.col-11 {width: 91.66%;}
.col-12 {width: 100%;}
}
Otros puntos de interrupción
Puedes agregar puntos de interrupción según tus necesidades.
También podemos establecer puntos de interrupción para tabletas y teléfonos móviles.
Escritorio
Tabletas
Móviles
Agrega una media query en 600px y establece un nuevo estilo (para pantallas mayores de 600px pero menores de 768px):
Ejemplos
Observa que los dos grupos de clases tienen los mismos estilos, pero nombres diferentes (col- y col-m-):
[class*="col-"] {
width: 100%;
}
@media only screen and (min-width: 600px) {
/* For tablets: */
.col-m-1 {width: 8.33%;}
.col-m-2 {width: 16.66%;}
.col-m-3 {width: 25%;}
.col-m-4 {width: 33.33%;}
.col-m-5 {width: 41.66%;}
.col-m-6 {width: 50%;}
.col-m-7 {width: 58.33%;}
.col-m-8 {width: 66.66%;}
.col-m-9 {width: 75%;}
.col-m-10 {width: 83.33%;}
.col-m-11 {width: 91.66%;}
.col-m-12 {width: 100%;}
}
@media only screen and (min-width: 768px) {
/* For desktop: */
.col-1 {width: 8.33%;}
.col-2 {width: 16.66%;}
.col-3 {width: 25%;}
.col-4 {width: 33.33%;}
.col-5 {width: 41.66%;}
.col-6 {width: 50%;}
.col-7 {width: 58.33%;}
.col-8 {width: 66.66%;}
.col-9 {width: 75%;}
.col-10 {width: 83.33%;}
.col-11 {width: 91.66%;}
.col-12 {width: 100%;}
}
Pruébalo »
El código anterior parece redundante, pero puede configurar automáticamente diferentes estilos según el tamaño de la pantalla, por lo que sigue siendo necesario.
Ejemplos HTML
Para escritorio:
La primera y la tercera sección abarcan 3 columnas. La parte central abarca 6 columnas.
Para tabletas:
La primera abarca 3 columnas, la segunda parte abarca 9 columnas, y la tercera abarca 12 columnas:
<div class="col-3 col-m-3">...</div>
<div class="col-6 col-m-9">...</div>
<div class="col-3 col-m-12">...</div>
</div>
Orientación: horizontal/vertical
Combinando las media queries de CSS, se pueden crear diseños que se adaptan a la orientación de diferentes dispositivos (horizontal/landscape, vertical/portrait, etc.).
Sintaxis:
orientation:portrait | landscape
- portrait:Especifica que la altura del área visible de la página en el dispositivo de salida es mayor o igual que el ancho.
- landscape:Excepto por el valor portrait, todos los casos son landscape.
Ejemplos
Si es horizontal, el fondo será azul claro:
body {
background-color: lightblue;
}
}
Pruébalo »