Documentos de Académico
Documentos de Profesional
Documentos de Cultura
md 9/13/2022
Media Queries
Objetivos:
Sintaxis
Las media queries consisten de un tipo de medio opcional y una o más expresiones de características
de medios.
Varias consultas se pueden combinar utilizando operadores lógicos. No distinguen entre mayúsculas y
minúsculas.
@media Rule
1 / 10
04-media.md 9/13/2022
La regla CSS @media asocia un grupo de declaraciones anidadas, en un bloque CSS delimitado por
llaves, con una condición definida por un media query.
Media Types
all: Apto para todos los dispositivos.
print: Destinado a material impreso y visualización de documentos en una pantalla en el modo de vista
previa de impresión.
screen: Destinado principalmente a las pantallas.
speech: Destinado a sintetizadores de voz.
CSS 2.1 y Media Queries 3 definió varios tipos de media adicionales (tty, tv, projection, handheld, braille,
embossed, aural), pero fueron descontinuados en Media Queries 4 y no deben ser usados.
Media Feature
Una vez que definimos el tipo de medio que estamos tratando de hacer coincidir (media types),
podemos comenzar a definir con qué características estamos tratando de hacerlo coincidir.
Existen muuuuuchos: lista detallada
Los más populares: max-width min-width
Operadores Lógicos
Las consultas de medios admiten operadores lógicos como muchos lenguajes de programación para
que podamos hacer coincidir los tipos de medios en función de ciertas condiciones.
not, and, y only.
2 / 10
04-media.md 9/13/2022
Tal vez queramos apuntar a los dispositivos por lo que no admiten o no coinciden. Esta declaración elimina el
color de fondo del cuerpo cuando el dispositivo es una impresora y solo puede mostrar un color.
Mobile-first vs Desktop-first
El término Mobile-First significa que cuando desarrollamos un sitio web, primero comenzamos a
escribir el CSS para tamaños de ventana de visualización más pequeños y luego usamos consultas de
medios de CSS para modificar la experiencia para los más grandes (por ejemplo, tabletas o
computadoras de escritorio).
.grid {
display: grid;
grid-template-columns: 1fr;
gap: 10px;
}
3 / 10
04-media.md 9/13/2022
.item {
border: 3px solid magenta;
padding: 10px;
text-align: center;
}
.grid {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
gap: 10px;
}
.item {
border: 3px solid magenta;
padding: 10px;
text-align: center;
}
4 / 10
04-media.md 9/13/2022
.item:nth-child(3) {
grid-column: span 2;
}
}
.item:nth-child(3) {
grid-column: span 1;
}
}
Pero en la práctica uno trabaja de forma paralela, maneje cada sección/componente por separado
comenzando primero con el móvil y luego mejorando para tamaños más grandes.
Breakpoint
Los puntos de interrupción o quiebre son anchos personalizables que determinan cómo se comporta
su diseño receptivo en los tamaños de dispositivo o ventana gráfica.
En Bootstrap 5
En TailwindCSS
.container {
max-width: 95%;
margin-left: auto;
margin-right: auto;
}
}
}
.grid {
display: grid;
grid-template-columns: 1fr;
gap: 10px;
}
.item {
border: 3px solid magenta;
padding: 10px;
text-align: center;
}
Basic First
otra teoría
Trabajo en pequeños componentes. (modularizando CSS)
se basa en un principio muy simple, que solo si el estilo es común a todos los puntos de interrupción,
se escribirá en la raíz principal del componente.
Defina puntos de interrupción cerrados.
¡Las anulaciones de CSS son malas! Trate siempre de evitarlos.
.grid {
display: grid;
gap: 10px;
}
6 / 10
04-media.md 9/13/2022
.item {
border: 3px solid magenta;
padding: 10px;
text-align: center;
}
Prácticas
codepen 1
codepen 2
Práctica #01
<div class="grid">
<header>Header</header>
<aside>Sidebar</aside>
<main>Main</main>
<footer>Footer</footer>
</div>
.grid {
display: grid;
gap: 5px;
grid-template-columns: 1fr 5fr;
grid-template-areas:
"header header"
"sidebar sidebar"
"main main"
"footer footer";
}
7 / 10
04-media.md 9/13/2022
"header header"
"sidebar main"
"footer footer";
}
}
header,
aside,
main,
footer {
border: 3px solid salmon;
padding: 10px;
text-align: center;
}
header {
grid-area: header;
}
aside {
grid-area: sidebar;
}
main {
grid-area: main;
}
footer {
grid-area: footer;
}
Práctica #02
Dark mode
artículo
en detalle
Tener un esquema de color de "modo oscuro" es algo que estamos viendo mucho más en estos días, y
gracias a la función prefers-color-scheme, podemos aprovechar el sistema de un usuario o las
8 / 10
04-media.md 9/13/2022
Imágenes responsives
artículo
<main>
<picture>
<source
srcset="img/img-xl.jpg"
media="(min-width: 800px)"
/>
<source
srcset="img/img-md.jpg"
media="(min-width: 500px)"
/>
<img src="img/img-sm.jpg" alt="" />
</picture>
</main>
HTML
Hay algunas formas en que podemos usar las consultas de medios directamente en HTML.
En este ejemplo. le estamos diciendo al navegador que queremos usar diferentes hojas de estilo en
diferentes tamaños de ventana gráfica:
Puede ser una buena manera de ajustar el rendimiento de su sitio al dividir los estilos de manera que
los dispositivos que los necesitan los descarguen y los sirvan.
no siempre evita que se descarguen las hojas de estilo que no coinciden con esas consultas de medios,
simplemente les asigna un nivel de prioridad de carga bajo.
Por lo tanto, si un dispositivo de pantalla pequeña como un teléfono visita el sitio, solo descargará las
hojas de estilo en las consultas de medios que coincidan con el tamaño de su ventana gráfica. Pero si
9 / 10
04-media.md 9/13/2022
aparece una pantalla de escritorio más grande, descargará todo el grupo porque coincide con todas
esas consultas (bueno, menos la consulta de impresión en este ejemplo específico).
fuente
TailwindCSS
tailwindcss
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>CSS media queries</title>
<script src="https://cdn.tailwindcss.com"></script>
</head>
<body>
<div class="container mx-auto px-4">
<header class="bg-blue-300 sm:bg-red-300 md:bg-green-300">
Header
</header>
<div class="grid sm:grid-cols-12">
<aside
class="dark:bg-gray-900 dark:text-white hidden sm:block
sm:col-span-3 bg-gray-300"
>
Sidebar
</aside>
<main class="text-xl sm:col-span-9">main</main>
</div>
<footer class="text-center">Footer</footer>
</div>
</body>
</html>
10 / 10