Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Anterior (en-US)
Siguiente (en-US)
En los primeros días del diseño web, las páginas se diseñaban para llenar un tamaño de pantalla
en particular. Si el usuario tenía una pantalla más grande o más pequeña que la del diseñador, los
resultados esperados iban desde barras de desplazamiento no deseadas hasta longitudes de
línea excesivamente largas y un mal uso del espacio. A medida que estuvieron disponibles
tamaños de pantalla más diversos, apareció el concepto de diseño web
responsivo (RWD, responsive web design), un conjunto de prácticas que permite a las páginas web
alterar su diseño y apariencia para adaptarse a diferentes anchos de pantalla, resoluciones, etc.
Es una idea que cambió la forma en que diseñamos para una web multidispositivo, y en este
artículo te ayudaremos a comprender las principales técnicas que necesitas saber para
dominarlo.
Conceptos básicos
de HTML
(véase Introducción
al HTML) y
Prerrequisitos: nociones de cómo
funciona el CSS
(véase Primeros
pasos en CSS y Los
elementos básicos
del CSS).
Comprender los
conceptos
Objetivo: fundamentales y la
historia del diseño
responsivo.
Podías crear un sitio líquido, que se expandiría para llenar toda la ventana del navegador
o un sitio de ancho fijo, que sería un tamaño fijo en píxeles.
Estos dos enfoques tendían a dar como resultado un sitio web que se veía mejor ¡en la pantalla
de la persona que diseñaba el sitio! El sitio líquido dio como resultado un diseño encogido en las
pantallas que eran más pequeñas (como se ve a continuación) o longitudes de línea
interminables en las pantallas que eran más grandes.
Nota: Observa este ejemplo y su código fuente de un diseño líquido sencillo. Amplía o
Nota: Las capturas de pantalla anteriores se han tomado usando el modo de diseño
A medida que la web móvil comenzó a hacerse realidad con los primeros teléfonos con
funciones, las empresas que deseaban adoptar los dispositivos móviles solían crear una versión
especial de su sitio web para dispositivo móvil, con una URL diferente (a menudo algo así
como m.example.com o example.mobi). Esto significaba que había que desarrollar y actualizar dos
versiones independientes del sitio web.
Además, estos sitios web para dispositivos móviles a menudo ofrecían una experiencia muy
reducida. A medida que los dispositivos móviles se volvían más potentes y capaces de mostrar
sitios web completos, esto resultaba frustrante para los usuarios de dispositivos móviles, que se
veían atrapados en la versión móvil del sitio web y no podían acceder a la información que sabían
que había en la versión de escritorio, que incluía todas las funciones del sitio web.
Zoe Mickley Gillenwater fue determinante en su trabajo de descripción y formalización de los
diversos modos en que se podían crear sitios web flexibles para intentar encontrar una situación
intermedia entre llenar toda la pantalla o tener un tamaño completamente fijo.
Diseño responsivo
El término diseño responsivo fue acuñado por Ethan Marcotte en 2010, y describía el uso
combinado de tres técnicas.
1. La primera era la idea de las redes fluidas, algo que ya exploraba Gillenwater, y que puede
leerse en el artículo de Marcotte, Fluid Grids (publicado en 2009 en A list apart).
2. La segunda técnica era la idea de las imágenes fluidas. Usando una técnica muy simple de
establecer la propiedad de max-width al 100% , las imágenes se reducían si su columna de
contención se volvía más estrecha que el tamaño intrínseco de la imagen, pero nunca se
expandía. Esto permite reducir una imagen para que se ajuste a una columna de tamaño
flexible, en lugar de que desborde, pero no se expande ni se pixela si la columna se ensancha
más que la imagen.
3. El tercer componente clave era la consulta a los media. Las consultas a los media habilitan el
tipo de cambio de diseño que Cameron Adams había explorado previamente usando
JavaScript, pero usando solo CSS. En lugar de tener un único diseño para todos los tamaños
de pantalla, el diseño podría cambiarse. Las barras laterales pueden reposicionarse en una
pantalla más pequeña, o puede mostrarse una navegación alternativa.
El resto de este artículo te indicará las diversas características de la plataforma web que puedas
querer utilizar para crear un sitio responsivo.
Por ejemplo, la consulta a los media siguiente explora si la página web que se muestra lo hace
como un medio de pantalla (por lo tanto, no es un documento impreso) y si la ventana tiene al
menos 800 píxeles de ancho. El CSS para el selector .container solo se aplicará si ambas
condiciones son ciertas.
.container {
Puedes añadir múltiples consultas a los media dentro de una hoja de estilo, y ajustar todo tu
diseño o solo partes de él para que se adapte mejor a los diferentes tamaños de pantalla. Los
puntos en los que se introduce una consulta a los media y se cambia el diseño se conocen
como puntos de interrupción.
Un enfoque común cuando se usan las consultas a los media es crear un diseño sencillo de una
sola columna para dispositivos de pantalla estrecha (por ejemplo, teléfonos móviles), luego
implementar un diseño en columnas para pantallas más grandes cuando se sabe que hay
suficiente ancho de pantalla para manejarlo. Esto se describe a menudo como diseño primero
móvil.
Al usar una cuadrícula flexible, solo necesitas añadir un punto de interrupción y cambiar el diseño
en el punto en que el contenido comienza a verse mal. Por ejemplo, si las longitudes de las líneas
se vuelven interminablemente largas a medida que el tamaño de la pantalla aumenta, o una caja
se encoje hasta un ancho de dos palabras en cada línea a medida que el tamaño de la pantalla se
reduce.
En los primeros días del diseño responsivo, nuestra única opción para el diseño de páginas web
era usar elementos flotantes. Los diseños de pantalla con elementos flotantes flexibles se
lograban dando a cada elemento un ancho porcentual asegurándose de que para toda la página
no alcanzara más del 100%. En su trabajo original sobre cuadrículas fluidas, Marcotte detalló una
fórmula para tomar un diseño de página web diseñado usando píxeles y convertirlo en
porcentajes.
.col {
Este enfoque se encuentra hoy en muchos lugares de la web, y aquí está documentado en la
sección de compaginación de nuestro artículo sobre métodos de compaginación heredados. Es
probable que encuentres sitios web que utilizan este enfoque en su trabajo, por lo que vale la
pena entenderlo, aunque no vas a construir un sitio web moderno utilizando una cuadrícula
flexible basada en elementos flotantes.
El ejemplo siguiente muestra un diseño responsivo sencillo que utiliza consultas a los medios y
una cuadrícula flexible. En pantallas estrechas, el diseño de página muestra las cajas en columna
una encima de la otra:
En pantallas más anchas se pasa a dos columnas:
Nota: Puedes encontrar el ejemplo en vivo y el código fuente de este ejemplo en
GitHub.
Multicol
El más antiguo de estos métodos de diseño de páginas web es multicol. Cuando especificas un
atributo column-count , esto indica en cuántas columnas deseas dividir tu contenido. El
navegador entonces calcula el tamaño de estas columnas, que cambiará de acuerdo con el
tamaño de la pantalla.
.container {
column-count: 3;
.container {
column-width: 10em;
}
Flexbox
En el método Flexbox, los elementos flexibles se encogen y distribuyen el espacio entre los
elementos según el espacio que hay en su contenedor, según su comportamiento inicial. Al
cambiar los valores de flex-grow y flex-shrink , puedes indicar cómo deseas que se comporten
los elementos cuando a su alrededor hay más o menos espacio.
En el ejemplo siguiente, los elementos flexibles ocupan cada uno la misma cantidad de espacio
en el contenedor flexible, al utilizar la abreviatura flex: 1 como se describe en el
artículo Flexbox: Dimensionamiento flexible de los elementos flex.
.container {
display: flex;
.item {
flex: 1;
Cuadrículas CSS
En el diseño de cuadrículas con CSS, la unidad fr permite la distribución del espacio disponible
en las trazas de la cuadrícula. El ejemplo siguiente crea un contenedor de cuadrícula con tres
trazas dimensionadas a 1fr . Esto crea tres columnas, cada una de las cuales ocupa una parte del
espacio que hay disponible en el contenedor. Puedes obtener más información sobre este
enfoque para crear una cuadrícula en el módulo Aprender a diseñar cuadrículas en Cuadrículas
flexibles con la unidad fr.
.container {
display: grid;
Nota: La versión del diseño de página en cuadrícula es aún más simple, ya que podemos
definir las columnas en .wrapper: ejemplo, código fuente.
Imágenes responsivas
El enfoque más simple para las imágenes responsivas es el que se describe en los primeros
artículos de Marcotte sobre diseño responsivo. Básicamente, tomar una imagen que tenga el
tamaño más grande que puedas necesitar, y reducirla. Este continúa siendo un enfoque utilizado
hoy en día, y en la mayoría de las hojas de estilo encontrarás en alguna parte el CSS siguiente:
img {
max-width: 100%:
Hay inconvenientes obvios en este enfoque. La imagen puede mostrarse mucho más pequeña
que su tamaño intrínseco, lo que representa una pérdida de ancho de banda: un usuario de
dispositivo móvil puede descargar una imagen que sea varias veces el tamaño de lo que ve en
realidad en la ventana del navegador. Además, es posible que no desees la misma relación de
aspecto de la imagen en dispositivos móviles y en ordenadores de escritorio. Por ejemplo, podría
ser bueno tener una imagen cuadrada para dispositivos móviles, pero mostrar la misma escena
que una imagen horizontal en el escritorio. O bien es posible que, reconociendo el tamaño más
pequeño de una imagen en dispositivos móviles, desees mostrar una imagen diferente, que se
entienda mejor en un tamaño de pantalla pequeño. Estas cosas no se pueden lograr
simplemente reduciendo una imagen.
También puedes usar imágenes de director artístico, que proporcionan un recorte o una imagen
completamente diferente para diferentes tamaños de pantalla.
Tipografía responsiva
Un elemento de diseño responsivo que todavía no hemos tratado en trabajos anteriores es la
idea de la tipografía responsiva. Este concepto describe esencialmente el hecho de cambiar el
tamaño de letra según el espacio de pantalla que reflejan las consultas a media.
En este ejemplo, queremos establecer que nuestro encabezado de nivel 1 sea 4rem , lo que
significa que será cuatro veces nuestro tamaño de letra base. ¡Es un título muy grande! Solo
queremos este título de encabezado gigante en los tamaños de pantalla más grandes, por lo
tanto, primero creamos un título de encabezado más pequeño y luego usamos las consultas a los
media para sobrescribirlo con el tamaño más grande si sabemos que el usuario tiene un tamaño
de pantalla de al menos 1200px .
html {
font-size: 1em;
h1 {
font-size: 2rem;
h1 {
font-size: 4rem;
Hemos editado nuestro ejemplo anterior de cuadrícula responsiva para incluir también el tipo de
respuesta utilizando el método descrito. Puedes ver cómo el título de encabezado cambia de
tamaño cuando el diseño para a la versión de dos columnas.
Como muestra este enfoque sobre la tipografía, no es necesario restringir las consultas a medios
a cambiar solo el diseño de página. Se pueden usar para ajustar cualquier elemento y hacerlo
más útil o atractivo según los diversos tamaños de pantalla.
h1 {
font-size: 6vw;
El problema de hacer esto es que el usuario pierde la posibilidad de ampliar cualquier conjunto
de texto configurado en unidades vw , porque ese texto siempre está en relación con el tamaño
de la ventana gráfica. Por lo tanto, nunca hay que establecer texto utilizando solo unidades de
ventana.
Hay una solución, que implica el uso de la función calc() . Si añades la unidad vw a un valor
establecido con un tamaño fijo, como em o rem , el texto continúa siendo ampliable.
Esencialmente, la unidad vw se añade sobre ese valor ampliado:
h1 {
Esto significa que necesitamos especificar el tamaño de letra para el título de encabezado una
sola vez, en lugar de configurarlo para dispositivos móviles y redefinirlo en las consultas a
medios. Luego, el tipo de letra aumenta gradualmente a medida que aumenta el tamaño de la
ventana gráfica.
Observa un ejemplo en: ejemplo, código fuente.
La metaetiqueta viewport
Si observas el tipo de letra de una página HTML responsiva, en general vas a encontrar la
siguiente etiqueta <meta> en la cabecera del documento.
Esta metaetiqueta informa a los navegadores de los dispositivos móviles que deben establecer el
ancho de la ventana gráfica al ancho del dispositivo y escalar el documento al 100% de ese
tamaño, de modo que el documento se mostrará al tamaño optimizado para esos dispositivos
móviles.
¿Por qué esto es necesario? Porque los navegadores de los dispositivos móviles tienden a mentir
sobre el ancho de su ventana gráfica.
Esta metaetiqueta existe porque cuando se lanzó el iPhone original y la gente comenzó a ver
sitios web en una pequeña pantalla de teléfono móvil, la mayoría de los sitios web no estaban
optimizados para dispositivos móviles. Por lo tanto, el navegador móvil establecía el ancho de la
ventana gráfica en 960 píxeles, representaba la página con ese ancho y mostraba el resultado
como una versión reducida del diseño del escritorio. Otros navegadores de dispositivos móviles
(por ejemplo, en Google Android) hicieron lo mismo. Los usuarios podían acercarse y desplazarse
por el sitio web para ver las partes que les interesaban, pero se veía mal. Todavía verás esto hoy
en día si tienes la desgracia de encontrarte con un sitio web que no tiene un diseño de página
responsivo.
Con la metaetiqueta viewport puedes usar otras configuraciones, aunque, en general vas a
querer usar la línea anterior.
Deberías evitar el uso de minimum-scale y maximum-scale , y en particular establecer user-
scalable en no . Hay que permitir a los usuarios hacer zoom tanto o tan poco como lo necesiten;
evitarlo provoca problemas de accesibilidad.
Nota: Hay una @regla CSS establecida para reemplazar la
metaetiqueta viewport : @viewport. Sin embargo, tiene poca compatibilidad con los
navegadores. Se implementó en Internet Explorer y Edge, pero una vez que se lance el
navegador Edge basado en Chromium, dejará de formar parte del navegador Edge.
Resumen
El diseño responsivo se refiere a un diseño página de un sitio web o una aplicación que responde
al entorno en el que se visualiza. Abarca una serie de características y técnicas de CSS y HTML, y
ahora es esencialmente el modo como construimos los sitios web de forma predeterminada.
Piensa en los sitios web que visitas con tu dispositivo móvil; probablemente sea inusual
encontrar un sitio web que tenga la versión de escritorio reducida o en que necesites
desplazarse hacia los lados para encontrar las cosas. Esto se debe a que la web se ha movido a
este enfoque de diseño responsivo.
Además, lograr diseños responsivos se ha vuelto mucho más fácil con la ayuda de los métodos de
diseño que has aprendido en estos artículos. Si eres nuevo en el desarrollo web, hoy tienes
muchas más herramientas a tu disposición que en los primeros días del diseño de página
responsivo. Por lo tanto, vale la pena verificar la antigüedad de los materiales que consultas. Si
bien los artículos históricos continúan siendo útiles, el uso moderno de CSS y HTML facilita
mucho la creación de diseños elegantes y útiles, sin importar con qué dispositivo el visitante
visita el sitio.