
Mobile-first, unidades relativas, media queries y navbar hamburguesa para navegación adaptable.
Viewport y Unidades Responsive
- Meta viewport: Indica al navegador cómo escalar el contenido en pantallas pequeñas. Sin esta etiqueta, el diseño se ve "alejado" en móvil.
- Unidades relativas:
%se adapta al contenedor,remusa el tamaño base del documento,emdepende del padre,vh/vwdependen del viewport. - Imágenes fluidas:
max-width: 100%evita que se salgan del contenedor yheight: autoconserva la proporción.
Media Queries (Mobile First)
css1.container { padding: 1rem; } 2.grid { display: flex; flex-direction: column; gap: 1rem; } 3 4@media (min-width: 768px) { 5 .grid { flex-direction: row; flex-wrap: wrap; } 6 .grid-item { flex: 1 1 45%; } 7} 8 9@media (min-width: 1024px) { 10 .grid-item { flex: 1 1 30%; } 11} 12 13@media (prefers-color-scheme: dark) { 14 body { background: #1a1a1a; color: #fff; } 15}
- Enfoque mobile-first: estilos base para móvil y mejoras progresivas.
- Breakpoints comunes (480/768/1024/1440) y orientación.
Navbar Hamburguesa
html1<nav class="navbar"> 2 <div class="logo">MiSitio</div> 3 <button class="menu-toggle" aria-label="Abrir menú">☰</button> 4 <ul class="nav-menu"> 5 <li><a href="#home">Inicio</a></li> 6 <li><a href="#about">Nosotros</a></li> 7 <li><a href="#services">Servicios</a></li> 8 <li><a href="#contact">Contacto</a></li> 9 </ul> 10</nav>
css1.navbar { display: flex; justify-content: space-between; align-items: center; padding: 1rem; background: #333; color: #fff; } 2.menu-toggle { display: block; background: none; border: none; color: #fff; font-size: 1.5rem; cursor: pointer; } 3.nav-menu { display: none; position: absolute; top: 60px; left: 0; right: 0; background: #333; flex-direction: column; padding: 1rem; } 4.nav-menu.active { display: flex; } 5@media (min-width: 768px) { 6 .menu-toggle { display: none; } 7 .nav-menu { display: flex; position: static; flex-direction: row; gap: 2rem; } 8}
- Manejo de estado (clase
.active) con JavaScript básico para abrir/cerrar menú. - Consideraciones de accesibilidad:
aria-labely foco en enlaces.
Optimización de Imágenes
- Formatos recomendados (WebP, AVIF) y tamaños adecuados por viewport.
srcset/sizespara servir imágenes responsivas.- Lazy loading con
loading="lazy".
Ejemplos de Código
3 ejemplos
Toggle de menú
javascript
1const toggle = document.querySelector('.menu-toggle');
2const menu = document.querySelector('.nav-menu');
3toggle.addEventListener('click', () => {
4 menu.classList.toggle('active');
5});Imágenes adaptables
css
1img {
2 max-width: 100%;
3 height: auto;
4 display: block;
5}Grid responsive con flex
css
1.grid {
2 display: flex;
3 flex-direction: column;
4 gap: 1rem;
5}
6@media (min-width: 768px) {
7 .grid {
8 flex-direction: row;
9 flex-wrap: wrap;
10 }
11 .grid-item { flex: 1 1 45%; }
12}
13@media (min-width: 1024px) {
14 .grid-item { flex: 1 1 30%; }
15}Recursos
3 recursos disponibles
¡Hora de Practicar!
PrácticaIntermedio15 min
Práctica guiada - Landing responsive
Landing responsive
Construir una landing con hero, features y galería adaptable; aplicar breakpoints 768/1024/1440 y probar en Responsive Mode.
Desafío de Código
EjercicioIntermedio15 min
Ejercicios - Media queries
Media queries
(1) Ajustar paddings por breakpoint,
(2) cambiar columnas de una grilla según ancho,
(3) implementar modo oscuro con prefers-color-scheme,
(4) crear navbar hamburguesa funcional.
Taller Práctico
TallerIntermedio20 min
Proyecto de la semana
Desafío practico
Landing page responsive completa: header con logo y menú hamburguesa, hero con CTA, sección de características, galería 2/3/4 columnas según viewport, formulario de contacto y footer en 3 columnas. Mobile-first, imágenes optimizadas y colores consistentes.