CSS Grid Level 3, también conocido como el diseño “Masonry”, pide ayuda para su creación
(webkit.org)-
Está en marcha una propuesta para añadir el diseño Masonry de CSS Grid (también llamado diseño de mampostería o de cascada) a CSS Grid Level 3
- El diseño Masonry es un patrón que llena el contenido de forma compacta, como ladrillos o un muro de piedra, y permite distribuir elementos de distintos tamaños sin recortarlos ni omitirlos, haciendo que el contenido fluya por columnas
- Este era un tipo de diseño difícil de implementar solo con CSS y sin JavaScript
-
Se crearon 4 demos para probar cómo implementar el mecanismo Masonry en CSS
- Crear un diseño Masonry/de cascada clásico
- Aprovechar las distintas funciones de definición de columnas de Grid
- Aprovechar la función de combinación de columnas de Grid
- Usar Subgrid y posicionamiento explícito
-
Al combinar las distintas funciones de Grid con Masonry, se pueden crear diseños mucho más creativos y dinámicos
- Definición flexible y variada del tamaño de columnas con unidades
fr,max-content,min-contenty la funciónminmax() - Combinación de columnas para destacar ciertos ítems o construir una cuadrícula más variada
- Con
Subgrid, ajustar las pistas de grids anidados al contenedor padre - Posicionamiento explícito para definir la ubicación de elementos específicos, como encabezados
- Definición flexible y variada del tamaño de columnas con unidades
-
También existe la postura de que el diseño Masonry debería separarse como un tipo de
displayindependiente- Hay preocupación de que combinar CSS Grid y Masonry aumente la complejidad y afecte negativamente el rendimiento
- Si Masonry se separa de Grid, ambas funciones podrían evolucionar de forma independiente
- Pero también hay opiniones que proponen implementar Masonry solo como un diseño limitado de columnas del mismo tamaño
-
Se considera que incluir la función Masonry dentro de CSS Grid ofrece más ventajas
- La especificación de CSS Grid Level 3 ya está escrita y fue implementada en 2 motores de navegador
- En adelante se podrían ofrecer las mismas funciones nuevas tanto a Grid como a Masonry (por ejemplo, estilizado de pistas)
- Masonry también es un tipo de Grid, así que encaja bien a nivel conceptual
-
Se quiere escuchar la opinión de diseñadores y desarrolladores web
- ¿Masonry debería formar parte de CSS Grid?
- ¿Quieren poder usar todas las funciones de Grid, como distintos tamaños de columna, combinación de columnas, posicionamiento y
Subgrid, o es mejor admitir solo columnas del mismo tamaño? - ¿Cómo usarían esta función? ¿Qué tipos de diseño podrían crear?
- Si tienen demos hechas por ustedes mismos, compártanlas
- ¿Hay diseños que sean difíciles de implementar con este modelo?
-
Puede que el nombre Masonry no sea el más adecuado. Podría valer la pena considerar una sintaxis como
grid-template-rows: off, en el sentido de eliminar las filas. Tomen en cuenta que el nombre podría cambiar en el futuro
La opinión de GN⁺
- Creemos que añadir la función Masonry a CSS Grid sería un cambio significativo que aumentaría mucho la capacidad expresiva de los layouts web. En especial, resulta atractivo poder implementar fácilmente grids en columnas que solo fluyen en dirección vertical
- En cambio, es difícil estar de acuerdo con la postura de separar Masonry como un tipo de
displayindependiente y limitar sus funciones. Más bien, parece que el alcance de uso de los diseños Masonry se ampliaría aún más al combinarse con las potentes funciones de Grid - Aun así, el nombre Masonry no es intuitivo y puede generar confusión, por lo que sería bueno considerar otro nombre que represente una cuadrícula solo de columnas. Una sintaxis como
grid-template-rows: none, que transmita con claridad la idea de una “grid sin filas”, podría ser mejor - Esperamos que esta propuesta pueda convertir a CSS Grid en una herramienta todavía más potente. Parece importante experimentar con distintos casos de diseño y dar opiniones de forma activa
1 comentarios
Opinión de Hacker News
Resumen:
break-inside: avoiddisplay:inline-blockpara tratar las fotos como si fueran texto y hacer que se redistribuyeran al pasar a una nueva línea