No es necesario entender cada Aspecto de Flexbox antes de que puedas saltar y comenzar. En este tutorial, presentaremos algunas características de Flexbox mientras diseñamos un "diseño de noticias" como el que puedes encontrar en The Guardian.
La razón por la que estamos utilizando Flexbox es que proporciona características muy potentes:
Entonces empecemos!
Crear columnas en CSS siempre ha sido un desafío. Durante mucho tiempo, las únicas opciones fueron usar flotadores o tablas, pero ambos tenían sus propios problemas..
Flexbox facilita el proceso, dándonos:
pantalla: flex
Empecemos por hacer dos columnas; uno que es 2/3 del ancho de nuestro contenedor, y uno que es 1/3.
Columna 2/31/3 columna
Aquí hay dos elementos:
columnas
envasecolumna
niños, uno con una clase adicional de columna principal
el cual usaremos para ampliarlo.columnas display: flex; .column flex: 1; .main-column flex: 2;
Como la columna principal tiene un valor flexible de 2
, ocupará el doble de espacio que la otra columna.
Al agregar algunos estilos visuales adicionales, esto es lo que obtenemos:
Cada una de estas dos columnas contendrá varios artículos apilados verticalmente, por lo que vamos a convertir el columna
elementos en contenedores Flexbox también. Queremos:
.columna pantalla: flexión; dirección flexible: columna; / * Hace que los artículos se apilen verticalmente * / .article flex: 1; / * Estira los artículos para llenar el espacio restante * /
los dirección flexible: columna
gobernar en el envase, combinado con el flex: 1
gobernar en el niños asegura que los artículos llenarán todo el espacio vertical, manteniendo nuestras primeras dos columnas de la misma altura.
Ahora, para darnos un control adicional, vamos a convertir cada artículo en un contenedor de Flexbox también. Cada uno de ellos contendrá:
Estamos utilizando Flexbox aquí para "empujar" la barra de información hacia abajo. Como recordatorio, este es el diseño del artículo que buscamos:
Aquí está el código:
.artículo display: flex; dirección flexible: columna; base flexible: auto; / * establece el tamaño inicial del elemento en función de su contenido * / .article-body display: flex; flex: 1; dirección flexible: columna; .article-content flex: 1; / * Esto hará que el contenido llene el espacio restante y, por lo tanto, empuje la barra de información en la parte inferior * /
Los elementos del artículo están dispuestos verticalmente gracias a la dirección flexible: columna;
regla.
Aplicamos flex: 1
al contenido del articulo
elemento para que llene el espacio vacío, y "empuja" el información del artículo
Al fondo, sin importar la altura de las columnas..
En la columna de la izquierda, lo que realmente queremos es otro set de columnas. Así que vamos a reemplazar el segundo artículo con el mismo columnas
contenedor que ya hemos utilizado.
Como queremos que la primera columna anidada sea más ancha, estamos agregando un columna anidada
clase con el estilo adicional:
.columna anidada flex: 2;
Esto hará que nuestra nueva columna sea dos veces más ancha que la otra..
El primer artículo es realmente grande. Para optimizar el uso del espacio, cambiemos su diseño a horizontal.
.primer artículo dirección flexible: fila; primer artículo. artículo-cuerpo flex: 1; .pirst-article .article-image altura: 300px; orden: 2; relleno superior: 0; ancho: 400px;
los orden
La propiedad es muy útil aquí, ya que nos permite alterar el orden de los elementos HTML sin afectar el marcado HTML. los artículo-imagen
en realidad viene antes de la articulo-cuerpo
en el marcado, pero se comportará como si viniera después.
Todo esto se ve como queremos, aunque está un poco aplastado. Vamos a arreglar eso yendo responsivo.
Una gran característica de Flexbox es que solo necesita quitar el pantalla: flex
gobierne en el contenedor para deshabilitar Flexbox por completo, manteniendo todas las demás propiedades de Flexbox (como alinear elementos
o flexionar
) válido.
Como resultado, puede activar un diseño "sensible" habilitando solo Flexbox encima un cierto punto de quiebre.
Vamos a eliminar pantalla: flex
tanto de la .columnas
y .columna
selectores, en lugar de envolverlos en una consulta de medios:
@media screen y (min-width: 800px) .columns, .column display: flex;
¡Eso es! En pantallas más pequeñas, todos los artículos estarán uno encima del otro. Por encima de 800px, se distribuirán en dos columnas..
Para hacer que el diseño sea más atractivo en pantallas más grandes, agreguemos algunos ajustes de CSS:
@media screen y (min-width: 1000px) .first-article flex-direction: row; primer artículo. artículo-cuerpo flex: 1; .pirst-article .article-image altura: 300px; orden: 2; relleno superior: 0; ancho: 400px; .main-column flex: 3; .nested-column flex: 2;
El primer artículo tiene su contenido dispuesto horizontalmente, con el texto a la izquierda y la imagen a la derecha. Además, la columna principal ahora es más ancha (75%) y la columna anidada también (66%). Aquí está el resultado final!
¡Espero haberte mostrado que no necesitas entender todos los aspectos de Flexbox para saltar y comenzar a usarlo! Este diseño de noticias sensible es un patrón realmente útil; sepárelo, juegue con él, háganos saber cómo le va!