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:

@media only screen and (max-width: 500px) {
    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%:

/* 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%;}

@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:

/* Diseño para móviles: */
[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-):

/* For mobile phones: */
[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="row">
<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:

@media only screen and (orientation: landscape) {
    body {
        background-color: lightblue;
    }
}

Pruébalo »
Otras extensiones