Hoy te mostraré cómo hacer una cuadrícula o grid en donde cada sección se acople a la pantalla de manera automática y dinámica sin que tú sepas la cantidad de columnas que habrá.
Esto es útil para cuando tenemos contenido dinámico (ya sea generado por el lado del cliente o del servidor) y queremos que las tarjetas o cuadros sobrantes se bajen automáticamente a otra fila.
Básicamente haremos una cuadrícula que ajuste el contenido dinámico usando bulma y sus columnas. Verás que es muy sencillo.
Descripción
Lo que haremos será acomodar las columnas y bajarlas si ya no caben en la pantalla. Por ejemplo, si cada columna ocupa un cuarto del ancho y colocamos 5 de ellas, la quinta se bajará a una nueva fila.
Todo esto sin saber la cantidad de cuadros que tendremos.
Filas automáticas con Vue
Veamos cómo tener filas automáticas. La clave está en agregar la clase is-multiline
al div que es el contenedor de columnas. La manera incorrecta es la siguiente:
<div class="columns">
<div class="column is-one-quarter">Yo ocupo un cuarto de la pantalla</div>
<div class="column is-one-quarter">Yo ocupo un cuarto de la pantalla</div>
<div class="column is-one-quarter">Yo ocupo un cuarto de la pantalla</div>
<div class="column is-one-quarter">Yo ocupo un cuarto de la pantalla</div>
<div class="column is-one-quarter">Yo ocupo un cuarto de la pantalla y debería de ir en una nueva fila sin tener que declararla</div>
</div>
Ya que al verlo en el navegador, no aparece la quinta columna:
Para solucionar eso podríamos cerrar el div de la fila y abrir otro, pero como queremos que esto sea dinámico simplemente agregamos la clase is-multiline
y ahora se ve así:
De este modo podrías agregar infinitas columnas y todas se ajustarían de manera automática creando nuevas filas. Obviamente podrías cambiar el tamaño a un tercio, un quinto, la mitad, etcétera.
Yo usé esto en un sitio de recetas que publicaré muy pronto, me sirvió para colocar todas las recetas como tarjetas automáticas y dinámicas.
Si quieres puedes ver el sitio oficial de bulma aquí y ver otros de mis post acá.