- Una nueva función de CSS, Grid Lanes, fue incorporada en Safari Technology Preview 234 para implementar layouts tipo masonry en la web
- Con la propiedad
display: grid-lanes, se pueden crear grids responsivos sin media queries, y grid-template-columns permite definir columnas flexibles
- La propiedad
item-tolerance permite ajustar la sensibilidad en la colocación de elementos, reduciendo el desequilibrio visual causado por diferencias de tamaño en el contenido
- Admite tanto dirección por columnas como por filas, y el flujo se decide automáticamente según se defina
grid-template-columns o grid-template-rows
- El CSS Working Group sigue debatiendo algunos nombres de propiedades, y el equipo de WebKit recomienda experimentar mientras avanzan en paralelo la estandarización y la implementación
Resumen de CSS Grid Lanes
- Grid Lanes es un nuevo modo de visualización para implementar layouts estilo masonry en la web con CSS nativo
- Se configura con
display: grid-lanes usando una sintaxis similar a la de grid
grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)) permite crear columnas flexibles con un ancho mínimo de 250px
- La propiedad
gap define el espaciado entre elementos, y permite adaptarse a cualquier tamaño de pantalla sin media queries
- Se puede probar experimentalmente en Safari Technology Preview 234, y WebKit ofrece una página de demos
Cómo funciona Grid Lanes
- El navegador coloca automáticamente cada elemento en la columna más cercana a la parte superior
- De forma similar a Masonry.js, el siguiente elemento se agrega a la columna que en ese momento sea la más corta
- Al navegar con Tab, el usuario puede recorrer horizontalmente el contenido visible en ese momento
- En contenidos con carga infinita por scroll, también es posible ordenar automáticamente sin usar JavaScript
Funciones extendidas de CSS Grid
- Variación en el tamaño de las lanes: con la sintaxis
grid-template-* se pueden alternar columnas angostas y anchas
- Ejemplo:
grid-template-columns: repeat(auto-fill, minmax(8rem, 1fr) minmax(16rem, 2fr)) minmax(8rem, 1fr)
- Soporte para expansión de elementos (
span)
- Se puede hacer que un elemento abarque varias columnas (
grid-column: span 4, etc.)
- Demo de ejemplo: layout tipo artículo de periódico
- También permite posicionamiento explícito
- Ejemplo:
header { grid-column: -3 / -1; } para fijar el encabezado en las últimas columnas
Cambio de dirección
- Admite tanto layouts basados en columnas (waterfall) como basados en filas (brick)
- Si se define
grid-template-columns, se configura automáticamente en dirección por columnas; si se define grid-template-rows, en dirección por filas
grid-auto-flow: normal es el valor predeterminado, y determina automáticamente el comportamiento según la dirección definida
- El CSS Working Group sigue discutiendo nombres de propiedades para controlar el flujo (
grid-lanes-direction, etc.)
- La conversación relacionada continúa en un issue de GitHub CSSWG-drafts
Ajuste de sensibilidad en la colocación: item-tolerance
item-tolerance determina qué tan estrictamente se distinguen las diferencias de tamaño al colocar elementos
- El valor predeterminado es
1em, y diferencias menores a eso se consideran como la misma altura
- Cuanto mayor sea el valor, menos se moverán los elementos de izquierda a derecha; cuanto menor sea, más fino será el ajuste de posición
- Desde el punto de vista de accesibilidad, hace falta elegir un valor adecuado para minimizar los saltos visuales al navegar con Tab
- Actualmente el nombre de la propiedad está definido como
item-tolerance, pero podría cambiar a flow-tolerance o pack-tolerance
Ejemplos de uso y pruebas
Próximos pasos
- El CSS Working Group sigue trabajando en definir los nombres de propiedades pendientes
- El equipo de WebKit ha estado avanzando en paralelo la implementación y la estandarización desde mediados de 2022
- Recomiendan a los desarrolladores crear demos y participar con feedback
- Jen Simmons está recopilando comentarios a través de Bluesky y Mastodon
- La sintaxis básica ya está estabilizada, por lo que está lista para aplicarse en proyectos reales
2 comentarios
Entonces habría que usar por separado Grid-lanes para Safari y grid para Firefox. Por favor, pónganse de acuerdo con el estándar web...
Opiniones en Hacker News
Aplausos para el equipo de Safari. Fue realmente sorprendente ver cómo en octubre saltó de repente hasta la cima del ranking de Interop 2025
field-sizing, resolviendo el problema de hacer que los campos de texto crezcan automáticamente según el contenidoOjalá salga pronto la función CSS Gap Decorations. Ya me cansé de seguir usando hacks innecesarios para crear divisores bonitos entre elementos de flex o grid
Usé un layout Masonry en un proyecto reciente, y aunque el rendimiento está bien, como se basa en absolute positioning se siente bastante hacky. Hay que conocer de antemano la relación de aspecto de los objetos y volver a calcular todo al redimensionar. Por eso espero que el soporte nativo llegue pronto
Estos anuncios están geniales, pero también tienen algo de comedia trágica. Como Apple no actualiza el navegador de forma continua, falta muchísimo para que se pueda confiar de verdad en estas funciones nuevas y usarlas en producción
El layout Masonry se ve bien, pero me parece difícil captar todas las imágenes de un vistazo
Me intriga por qué no lo llamaron Masonry. Aun así, el nombre grid-lanes es descriptivo y fácil de entender
Me pregunto cuánto tardarán los LLM en aprender correctamente esta nueva sintaxis de CSS
Si tengo que ver una página web hecha con una cuadrícula de texto de tamaños y posiciones arbitrarias, preferiría que alguien me disparara
Imagen de demo de una cuadrícula estilo periódico
Personalmente no me gustan los layouts por lanes. Es difícil revisar todos los elementos de una lista en orden, y la vista va saltando arriba y abajo, lo que genera fatiga cognitiva
Creo que Apple debería permitir descargar Safari de forma estable en todas las plataformas