Table of contents
- ¿Qué es un media query?
- Agregar un breakpoint(punto de interrupción/quiebre)
- Diseñe siempre primero para dispositivos móviles (mobile-first)
- Otros breakpoints
- Breakpoints típicos del dispositivo
- Orientación: Portrait / Landscape
- Ocultar elementos con media queries
- Cambiar el tamaño de fuente con media queries
- Referencias
¿Qué es un media query?
Media query es una técnica CSS introducida en CSS3.
Utiliza la regla @media
para incluir un bloque de propiedades CSS solo si una determinada condición es verdadera.
Ejemplo:
Si la ventana del navegador tiene 600px
o menos, el color de fondo será azul claro:
@media only screen and (max-width: 600px) {
body {
background-color: lightblue;
}
}
Agregar un breakpoint
(punto de interrupción/quiebre)
Anteriormente, en este tutorial creamos una página web con filas y columnas, y responsive, pero no se veía bien en una pantalla pequeña.
Los media query pueden ayudar con esto. Podemos agregar un punto de quiebre donde ciertas partes del diseño se comportarán de manera diferente en cada lado del punto de interrupción.
Utilice un media query para agregar un punto de quiebre en 768px
:
Ejemplo:
Cuando la pantalla (ventana del navegador) es más pequeña que 768px
, cada columna debe tener un ancho 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%;
}
}
Diseñe siempre primero para dispositivos móviles (mobile-first
)
Mobile First
significa diseñar primero para dispositivos móviles antes de diseñar para computadoras de escritorio o cualquier otro dispositivo (esto hará que la página se muestre más rápido en dispositivos más pequeños).
Esto significa que debemos realizar algunos cambios en nuestro CSS.
En lugar de cambiar los estilos cuando el ancho sea menor que 768px
, deberíamos cambiar el diseño cuando el ancho sea mayor que 768px
. Esto hará nuestro diseño Mobile First
:
Ejemplo:
/* For mobile phones: */
[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 {wi
dth: 83.33%;}
.col-11 {width: 91.66%;}
.col-12 {width: 100%;}
}
Otros breakpoints
Puedes agregar tantos puntos de interrupción como desees.
También insertaremos un punto de interrupción entre tabletas y teléfonos móviles.
Hacemos esto agregando una media query más (a 600px
) y un conjunto de nuevas clases para dispositivos de más de 600px
(pero más pequeños de 768px
):
Ejemplo:
Tenga en cuenta que los dos conjuntos de clases son casi idénticos, la única diferencia es el nombre (col-
y col-s-
):
/* For mobile phones: */
[class*="col-"] {
width: 100%;
}
@media only screen and (min-width: 600px) {
/* For tablets: */
.col-s-1 {width: 8.33%;}
.col-s-2 {width: 16.66%;}
.col-s-3 {width: 25%;}
.col-s-4 {width: 33.33%;}
.col-s-5 {width: 41.66%;}
.col-s-6 {width: 50%;}
.col-s-7 {width: 58.33%;}
.col-s-8 {width: 66.66%;}
.col-s-9 {width: 75%;}
.col-s-10 {width: 83.33%;}
.col-s-11 {width: 91.66%;}
.col-s-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%;}
}
Puede parecer extraño que tengamos dos conjuntos de clases idénticas, pero nos da la oportunidad en HTML de decidir qué sucederá con las columnas en cada punto de interrupción:
Ejemplo HTML
Para computadoras de escritorio
La primera y la tercera sección abarcarán 3 columnas cada una. La sección central abarcará 6 columnas.
Para tabletas
La primera sección abarcará 3 columnas, la segunda abarcará 9 y la tercera sección se mostrará debajo de las dos primeras secciones y abarcará 12 columnas:
Ejemplo:
<div class="row">
<div class="col-3 col-s-3">...</div>
<div class="col-6 col-s-9">...</div>
<div class="col-3 col-s-12">...</div>
</div>
Breakpoints
típicos del dispositivo
Hay miles de pantallas y dispositivos con diferentes alturas y anchos, por lo que es difícil crear un punto de interrupción exacto para cada dispositivo. Para simplificar las cosas, podría dirigirse a cinco grupos:
Ejemplo:
/* Extra small devices (phones, 600px and down) */
@media only screen and (max-width: 600px) {...}
/* Small devices (portrait tablets and large phones, 600px and up) */
@media only screen and (min-width: 600px) {...}
/* Medium devices (landscape tablets, 768px and up) */
@media only screen and (min-width: 768px) {...}
/* Large devices (laptops/desktops, 992px and up) */
@media only screen and (min-width: 992px) {...}
/* Extra large devices (large laptops and desktops, 1200px and up) */
@media only screen and (min-width: 1200px) {...}
Orientación: Portrait / Landscape
Los media query también se pueden utilizar para cambiar el diseño de una página según la orientación del navegador.
Puede tener un conjunto de propiedades CSS que solo se aplicarán cuando la ventana del navegador sea más ancha que su altura, la denominada orientación "horizontal":
Ejemplo:
La página web tendrá un fondo azul claro y la orientación está en modo horizontal:
@media only screen and (orientation: landscape) {
body {
background-color: lightblue;
}
}
Ocultar elementos con media queries
Otro uso común de los media queries es ocultar elementos en diferentes tamaños de pantalla:
Ejemplo:
/* If the screen size is 600px wide or less, hide the element */
@media only screen and (max-width: 600px) {
div.example {
display: none;
}
}
Cambiar el tamaño de fuente con media queries
También puedes utilizar media queries para cambiar el tamaño de fuente de un elemento en diferentes tamaños de pantalla:
Ejemplo:
/* If the screen size is 601px or more, set the font-size of <div> to 80px */
@media only screen and (min-width: 601px) {
div.example {
font-size: 80px;
}
}
/* If the screen size is 600px or less, set the font-size of <div> to 30px */
@media only screen and (max-width: 600px) {
div.example {
font-size: 30px;
}
}
Referencias
Para una descripción general más detallada sobre los media queries y características/expresiones, consulte @media_rule_css_reference.
Traducido con 💚 desde W3Schools.com