Continuando con Laracon Online, Rachel Andrew nos da una introducción al diseño de layout CSS en 2017 con CSS Grid y Flexbox. Veamos las notas a continuación:

Existen varias propiedades de CSS que se usan para diseñar layout: floats, inline-block, display: table, position: absolute y relative, y además existen una gran cantidad de Frameworks de CSS, los cuales en general hacen uso de dichas propiedades.

Los elementos de nuestros layouts se entienden a sí mismos como parte de un “layout completo”, pero independientes, lo cual produce un problema pues muchas veces estos elementos no saben cómo reaccionar frente a cambios de los otros elementos del layout.

Flexbox y Grid surgen como una forma de redefinir cómo diseñar layouts.  Toman el concepto de display:table y lo convierten en algo más usable, amigable y flexible, separando el código fuente de como éste se presenta en el navegador.

Con Flexbox puedes cambiar el orden de los elementos:

Posicionar elementos en cualquier lugar del grid

Realmente no importa en qué orden estén en el código fuente HTML puesto que pueden ser posicionadas en cualquier lugar.

Puedes hacer mucho más:

Grid dense con Flexbox: Permite llenar los espacios vacíos:

Poder y responsibilidad

CSS Grid da mayor control sobre el posicionamiento de los objetos comparado con Flexbox. Mientras que Flexbox crea un layout “fluido” colocando objetos secuencialmente, agregando espaciado, etc. CSS Grid permite especificar la posición y tamaño de cada uno de los elementos de forma más predecible y específica.

Esta aunque es una ventaja también puede presentar algunos problemas si pasamos por alto algún detalle como un error de posicionamiento, que como tal no es un error en sí mismo, pero pudiera ser un resultado no esperado. Por ejemplo, se espera que el orden de los elementos de una fila sean “ a b c d” pero se muestra “ a d c b”. En este caso se recomienda documentar muy bien el uso de estas funciones, indicando que pieza de contenido debería aparecer en que posición específicamente.

Centrar elementos ya no será complicado con CSS Grid.

Responsive by default

Justamente el origen de componentes como Flexbox surgen a partir del responsive-design y sobre la necesidad de contar con un layout fluido y adaptable al mismo tiempo. CSS Grid es un componente enfocado principalmente en este hecho y por tanto es “responsive” por defecto, lo que facilita la creación de layouts adaptables. No hay excusas.

Flexbox vs Grid

Flexbox es unidmensional (filas o columnas), CSS Grid es multidimensional, lo que permite usar filas y columnas al mismo tiempo.

Cuando trabajamos con grids en CSS y contenido dinámico eventualmente surge un problema cuando usamos un height específico en un div y el contenido repasa ese valor, finalmente el contenido acaba saliendo del contenedor. CSS Grid por defecto usa overflow:hidden, lo que permite que este contenido se oculte automáticamente en lugar de romper el contenedor.

Con CSS Grid básicamente creas un contenedor y agregas elementos al contenedor.

.wrapper {
    display:grid;
    grid-template-columns : 1fr 1fr 1fr;
}

Esto crea 3 columnas del mismo tamaño:

.wrapper {
   display:grid;
   grid-template-columns: 600px 1fr 1fr;
}

Esto asigna un valor fijo de 600px al  primer elemento del grid y el espacio restante lo divide en los dos elementos restantes.

En lugar de especificar uno a uno el ancho de cada columna se puede usar repeat() para repetir estas reglas en todos los elementos:

.wrapper {
   display:grid;
   grid-template-columns : repeat(4, 1fr);
}

Si estas indeciso sobre si usar o no CSS Grid, por el hecho de que es un componente muy nuevo, puedes usar el CSS query “@supports”

@supports (display:grid) {
   // grid implementation
}

De esta forma puedes incluir de forma segura el código y asegurar que si el navegador no lo soporta igual funcione.

Para conocer en detalle como funciona css-grid puedes visitar los siguientes enlaces:

Suscríbete a nuestro boletín

Te enviaremos publicaciones con consejos útiles y múltiples recursos para que sigas aprendiendo.

Más sobre Laracon Online

Durante el día de hoy te mantendremos al tanto de lo que se esté presentando en las diferentes conferencias:

Regístrate hoy en Styde y obtén acceso a todo nuestro contenido.