Consultas de Elemento: El Futuro del Diseño Web Adaptativo
Spanish (Español) translation by Miguel Sánchez (you can also view the original English article)
Las consultas de medios ('media queries') son una parte vital del diseño web moderno, pero no siempre son perfectas. En este artículo echaremos un vistazo a la idea de las "consultas de elemento", lo que muchos plantean como el futuro del diseño web adaptativo.
En Los Comienzos
El artículo de Ethan sobre Diseño Web Adaptativo cambió la forma en la que construimos sitios web, para siempre. Su artículo inspiró y fue rápidamente adoptado por diseñadores web y desarrolladores. Han surgido planteamientos tales como "Móvil Primero", "Escritorio Primero" e "Independiente del Dispositivo", se han desarrollado patrones de diseño desde entonces, se han introducido nuevos estándares como el elemento picture y ahora tenemos infinidad de opciones de entornos de referencia ('frameworks') que hacen más fácil desarrollar un sitio web adaptativo.
Ya no construimos sitios web para un determinado tamaño de pantalla, navegador o dispositivo. En cambio, los construimos para que sean igualmente agradables en cualquier dispositivo y tamaño de pantalla. Hacemos esto utilizando consultas de medios ('media queries'), sin olvidar la etiqueta meta viewport.
Consultas De Medios ('Media Queries')
Las consultas de medios están diseñadas para permitirnos moldear reglas de estilo respecto a un entorno específico. Uno de los usos más comunes de las consultas de medios es cambiar estilos dentro de cierto rango de anchos de ventana. El siguiente código, por ejemplo, oculta la barra lateral cuando se accede al sitio web a través de una ventana de visualización de hasta 720px de ancho.
1 |
.site-sidebar { |
2 |
display: flex; |
3 |
flex: 1 1 320px; |
4 |
}
|
5 |
@media ( max-width: 720px ) { |
6 |
.site-sidebar { |
7 |
display: none; |
8 |
}
|
9 |
}
|
Las consultas de medios se desarrollaron, junto con los dispositivos, con varias funciones adicionales como orientation (la orientación) y resolution (la resolución). El ejemplo siguiente muestra cómo podríamos utilizar una de estas características para servir un mayor tamaño de imagen en una pantalla de alta resolución.
1 |
.site-logo a { |
2 |
display: inline-block; |
3 |
background: url( images/logo.png ) no-repeat; |
4 |
}
|
5 |
@media screen and ( min-resolution: 2dppx ) { |
6 |
background: url( images/logo@2x.png ); |
7 |
}
|
Las consultas de medios se han convertido en un componente básico para ofrecer una experiencia adaptativa. Ponte al día leyendo estos artículos, tutoriales y consejos para aprovechar las consultas de medios, tanto en nuestras publicaciones anteriores en Tuts+ como en todo Internet.


HTML y CSSUn Acercamiento "La Legibilidad Primero" a Las Consultas De Medios Y La ComposiciónKezz Bracey

SassSimplificar las Consultas de Medios con "Breakpoint" de SassJoren Van Hee

Diseño Web AdaptativoConsejo Rápido: Acuérdate de los Puntos de Rotura VerticalIan Yates
Sin Embargo
Las consultas de medios no son la panacea para cada situación de diseño web adaptativo. De hecho, nunca fue esa la intención.
Hoy en día hay una gran variedad de dispositivos en el mercado en varios tamaños y características, difuminando la línea entre "móvil" y "escritorio" (os miro a vosotros "ordenadores portátiles híbridos"). Por esta razón, mantener la estética de un sitio web, una gran experiencia de usuario y el rendimiento, nunca ha sido más difícil.



Y una vez añades a la mezcla cosas como anuncios, tablas y contenido preexistente, la situación puede ser aún peor. Pronto te encontrarás con los aspectos "no tan buenos" de las consultas de medios.
Consultas De Medios: Lo "No Tan Bueno"
Considera el siguiente ejemplo. Tenemos un componente de interfaz de usuario (UI) para mostrar nuestro perfil de miembro de equipo. Queremos utilizar este componente en un par de lugares diferentes en nuestro sitio web. Este ejemplo muestra cómo la interfaz de usuario (UI) se presenta en un ancho de ventana de 780px.
En la página de "Perfil de usuario", ponemos el avatar de usuario a la izquierda y el nombre de usuario, así como la biografía, a la derecha.



En la página "Equipo" en nuestro sitio web, sin embargo, la composición cambia. La imagen del avatar de usuario ahora se coloca en la parte superior, y el nombre de usuario, así como la biografía, está por debajo. El tamaño de fuente también podría ser algo más pequeño.



Esta situación puede solucionarse con consultas de medios. Por ejemplo, podemos escribir el CSS como sigue:
1 |
/**
|
2 |
* Profile
|
3 |
*/
|
4 |
.team-profile { |
5 |
text-align: center; |
6 |
}
|
7 |
.team-profile .bio { |
8 |
margin-top: 20px; |
9 |
font-size: 14px; |
10 |
}
|
11 |
@media ( min-width: 480px ) { |
12 |
.team-profile { |
13 |
text-align: left; |
14 |
display: flex; |
15 |
}
|
16 |
.team-profile .avatar { |
17 |
flex: 0 0 120px; |
18 |
}
|
19 |
.team-profile .bio { |
20 |
font-size: 16px; |
21 |
flex: 0 1 580x; |
22 |
}
|
23 |
}
|
24 |
|
25 |
/**
|
26 |
* Profile card.
|
27 |
*/
|
28 |
.team-profile-card { |
29 |
text-align: center; |
30 |
}
|
31 |
.team-profile-card .bio { |
32 |
margin-top: 20px; |
33 |
font-size: 14px; |
34 |
}
|
35 |
|
36 |
/**
|
37 |
* Probably, some overrides
|
38 |
*/
|
39 |
.page .team-profile-card { ... } |
Se puede corregir mientras utilicemos algunas clases de identificación adicionales: .user-profile y .user-profile-card.
Sin embargo, también va en contra de nuestra interfaz de usuario que sea un componente reutilizable; una interfaz de usuario que se puede colocar en cualquier parte del sitio web y sea capaz de adaptarse a su entorno.
En este ejemplo queremos que la composición de nuestro componente se adapte cuando esté incluido en un recipiente pequeño, en vez de cuando es reducido por la ventana del navegador. Así que, en lugar de depender del tamaño de la vista de navegador para cambiar la composición, ¿por qué no lo hacemos a nivel de elemento?
Consultas de Elemento (Contenedor)
La idea de las consultas de elemento surgió en torno a principios de 2012; un par de años después de que el Diseño Web Adaptativo se convirtiese en la metodología convencional. Por desgracia, probablemente no había muchas razones convincentes para plantearlo como un estándar web en aquel momento. El mundo aún estaba acostumbrándose a ser flexible de nuevo.
@ianstormtaylor sí, las "consultas de elemento" aparecen una y otra vez
— Paul Irish (@paul_irish) 24 de enero de 2012
Comunidades web comenzaron iniciativas por su cuenta. RICG (Grupo Comunitario sobre el Asunto Adaptativo), el mismo grupo que inició el elemento <picture>, eventualmente añadió las consultas de elemento a su lista de asuntos, mientras otros desarrolladores construyeron una biblioteca de JavaScript, como EQCSS, para emular esta funcionalidad.
Las consultas de elemento funcionan similarmente a las consultas de medios; excepto que escuchan al tamaño del elemento en lugar de al de la ventana del navegador. Esto nos permite construir un sistema de interfaz de usuario (UI) realmente modular sobre el fundamento de no repetir código ('DRY: Don't Repeat Yourself'). Dado el mismo ejemplo, podríamos reescribir los estilos de nuestro componente de interfaz de usuario con EQCSS, como sigue:
1 |
.team-profile { |
2 |
text-align: center; |
3 |
}
|
4 |
.team-profile .bio { |
5 |
margin-top: 20px; |
6 |
font-size: 14px; |
7 |
}
|
8 |
@element ".team-profile" and ( min-width: 480px ) { |
9 |
.team-profile { |
10 |
display: flex; |
11 |
}
|
12 |
.team-profile .avatar { |
13 |
flex: 1 1 120px; |
14 |
}
|
15 |
.team-profile .bio { |
16 |
text-align: left; |
17 |
font-size: 16px; |
18 |
flex: 1 1 580x; |
19 |
}
|
20 |
}
|
Aquí no nos preocupa cuál es el ancho de la ventana. Como puedes ver arriba, mientras la interfaz de usuario (UI) se estira a 480px o una anchura mayor, mostramos juntos .avatar y .bio. Cuando el ancho de la interfaz de usuario se contrae por debajo de 480px, dejamos .avatar y .bio apilados y el contenido alineado al centro.
Concluyendo
Sólo como aclaración, no digo que usar consultas de medios sea malo, en absoluto. Las consultas de medios son maravillosas y así lo hemos visto en muchos sitios web construidos hoy en día. Las consultas de medios y las de elemento pueden ciertamente coexistir. Sin embargo, hay muchos escenarios de diseño donde utilizar consultas de elemento tendría más sentido que usar consultas de medios.
Lamentablemente, las consultas de elemento tienen aún un largo camino por recorrer antes de que finalmente se aprueben como un estándar web; nuestra esperanza en esto se apoya en toda la gente buena de RICG.
Mientras esperamos, podemos explorar el potencial de consultas de elemento a través de una biblioteca de JavaScript como EQCSS. Y eso es exactamente lo que vamos a hacer en el siguiente tutorial. ¡Estad atentos!
Más Lecturas
- Consultas de Contenedor: Una Vez Más En La Brecha por Mat Marquis
- Trabajando Alrededor De La Falta De Consultas De Elemento por Scott Jehl
- Las Consultas De Medio No Son La Respuesta: Consulta De Elemento Para Navegadores Que No La Soportan ('Polyfill') por Tyson Matanich



