Flexbox - Guía rápida

CAscading Style Sheets (CSS) es un lenguaje de diseño simple destinado a simplificar el proceso de hacer que las páginas web sean presentables. CSS maneja la apariencia de una página web.

Con CSS, puede controlar el color del texto, el estilo de las fuentes, el espacio entre párrafos, el tamaño y la disposición de las columnas, qué imágenes de fondo o colores se utilizan, diseños de diseño, variaciones en la visualización para diferentes dispositivos y tamaños de pantalla. así como una variedad de otros efectos.

Para determinar la posición y las dimensiones de los cuadros, en CSS, puede utilizar uno de los modos de diseño disponibles:

  • The block layout - Este modo se utiliza para diseñar documentos.

  • The inline layout - Este modo se utiliza para diseñar texto.

  • The table layout - Este modo se utiliza para diseñar tablas.

  • The table layout - Este modo se utiliza para posicionar los elementos.

Todos estos modos se utilizan para alinear elementos específicos como documentos, texto, tablas, etc., sin embargo, ninguno de ellos proporciona una solución completa para diseñar sitios web complejos. Inicialmente, esto se suele hacer mediante una combinación de elementos flotantes, elementos posicionados y diseño de tabla (a menudo). Pero los flotadores solo permiten colocar las cajas horizontalmente.

¿Qué es Flexbox?

Además de los modos mencionados anteriormente, CSS3 proporciona otro modo de diseño Caja flexible, comúnmente llamado como Flexbox.

Con este modo, puede crear fácilmente diseños para aplicaciones y páginas web complejas. A diferencia de los flotadores, el diseño de Flexbox brinda un control completo sobre la dirección, alineación, orden y tamaño de las cajas.

Características de Flexbox

Las siguientes son las características notables del diseño de Flexbox:

  • Direction - Puede organizar los elementos en una página web en cualquier dirección, como de izquierda a derecha, de derecha a izquierda, de arriba a abajo y de abajo a arriba.

  • Order - Con Flexbox, puede reorganizar el orden de los contenidos de una página web.

  • Wrap - En caso de espacio inconsistente para el contenido de una página web (en una sola línea), puede envolverlos en varias líneas (tanto horizontalmente) como verticalmente.

  • Alignment - Con Flexbox, puede alinear el contenido de la página web con respecto a su contenedor.

  • Resize - Con Flexbox, puede aumentar o disminuir el tamaño de los elementos de la página para que quepan en el espacio disponible.

Navegadores compatibles

A continuación se muestran los navegadores compatibles con Flexbox.

  • Chrome 29+
  • Firefox 28+
  • Internet Explorer 11+
  • Opera 17+
  • Safari 6.1+
  • Android 4.4 o superior
  • iOS 7.1 o superior

Para usar Flexbox en su aplicación, necesita crear / definir un contenedor flexible usando el display propiedad.

Usage -

display: flex | inline-flex

Esta propiedad acepta dos valores

  • flex - Genera un contenedor flexible a nivel de bloque.

  • inline-flex - Genera una caja contenedor flexible en línea.

Ahora veremos cómo utilizar el display propiedad con ejemplos.

Flexionar

Al pasar este valor a la propiedad de visualización, se creará un contenedor flexible a nivel de bloque. Ocupa todo el ancho del contenedor principal (navegador).

El siguiente ejemplo demuestra cómo crear un contenedor flexible a nivel de bloque. Aquí, estamos creando seis cajas con diferentes colores y hemos utilizado el contenedor flexible para sujetarlas.

<!doctype html>
<html lang = "en">
   <style>
      .box1{background:green;}
      .box2{background:blue;}
      .box3{background:red;}
      .box4{background:magenta;}
      .box5{background:yellow;}
      .box6{background:pink;}
      
      .container{
         display:flex;
      }
      .box{
         font-size:35px;
         padding:15px;
      }
   </style>
   
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
         <div class = "box box4">four</div>
         <div class = "box box5">five</div>
         <div class = "box box6">six</div>
      </div>
   </body>
</html>

Producirá el siguiente resultado:

Dado que le hemos dado el valor flex al display propiedad, el contenedor utiliza el ancho del contenedor (navegador).

Puede observar esto agregando un borde al contenedor como se muestra a continuación.

.container {
   display:inline-flex;
   border:3px solid black;
}

Producirá el siguiente resultado:

Flexión en línea

Al pasar este valor al displaypropiedad, se creará un contenedor flexible de nivel en línea. Simplemente ocupa el lugar requerido para el contenido.

El siguiente ejemplo demuestra cómo crear un contenedor flexible en línea. Aquí, estamos creando seis cajas con diferentes colores y hemos utilizado el contenedor inline-flex para guardarlas.

<!doctype html>
<html lang = "en">
   <style>
      .box1{background:green;}
      .box2{background:blue;}
      .box3{background:red;}
      .box4{background:magenta;}
      .box5{background:yellow;}
      .box6{background:pink;}
      
      .container{
         display:inline-flex;
         border:3px solid black;
      }
      .box{
         font-size:35px;
         padding:15px;
      }
   </style>
   
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
         <div class = "box box4">four</div>
         <div class = "box box5">five</div>
         <div class = "box box6">six</div>
      </div>
   </body>
</html>

Producirá el siguiente resultado:

Dado que hemos utilizado un contenedor flexible en línea, solo tomó el espacio necesario para envolver sus elementos.

los flex-direction La propiedad se utiliza para especificar la dirección en la que se necesitan colocar los elementos del contenedor flexible (elementos flexibles).

usage -

flex-direction: row | row-reverse | column | column-reverse

Esta propiedad acepta cuatro valores:

  • row - Organiza los elementos del contenedor horizontalmente de izquierda a derecha.

  • row-reverse - Organiza los elementos del contenedor horizontalmente de derecha a izquierda.

  • column - Organiza los elementos del contenedor verticalmente de izquierda a derecha.

  • column-reverse - Organiza los elementos del contenedor verticalmente de derecha a izquierda.

Ahora, tomaremos algunos ejemplos para demostrar el uso de la direction propiedad.

fila

Al pasar este valor al direction propiedad, los elementos del contenedor están dispuestos horizontalmente de izquierda a derecha como se muestra a continuación.

El siguiente ejemplo demuestra el resultado de pasar el valor rowa la propiedad flex-direction . Aquí, estamos creando seis cajas con diferentes colores con el valor de dirección flexiblerow.

<!doctype html>
<html lang = "en">
   <style>
      .box1{background:green;}
      .box2{background:blue;}
      .box3{background:red;}
      .box4{background:magenta;}
      .box5{background:yellow;}
      .box6{background:pink;}
      
      .box{
         font-size:35px;
         padding:15px;
      }
      .container{
         display:inline-flex;
         border:3px solid black;
         flex-direction:row;
      }
   </style>
   
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
         <div class = "box box4">four</div>
         <div class = "box box5">five</div>
         <div class = "box box6">six</div>
      </div>
   </body>
</html>

Producirá el siguiente resultado:

reversa

Al pasar este valor al direction propiedad, los elementos del contenedor están dispuestos horizontalmente de derecha a izquierda como se muestra a continuación.

El siguiente ejemplo demuestra el resultado de pasar el valor row-reversea la propiedad flex-direction . Aquí, estamos creando seis cajas con diferentes colores con el valor de dirección flexiblerow-reverse.

<!doctype html>
<html lang = "en">
   <style>
      .box1{background:green;}
      .box2{background:blue;}
      .box3{background:red;}
      .box4{background:magenta;}
      .box5{background:yellow;}
      .box6{background:pink;}
      
      .box{
         font-size:35px;
         padding:15px;
      }
      .container{
         display:inline-flex;
         border:3px solid black;
         flex-direction:row-reverse;
      }
   </style>
   
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
         <div class = "box box4">four</div>
         <div class = "box box5">five</div>
         <div class = "box box6">six</div>
      </div>
   </body>
</html>

Producirá el siguiente resultado:

columna

Al pasar este valor al direction propiedad, los elementos del contenedor están dispuestos verticalmente de arriba a abajo como se muestra a continuación.

El siguiente ejemplo demuestra el resultado de pasar el valor columna la propiedad flex-direction . Aquí, estamos creando seis cajas con diferentes colores con el valor de dirección flexiblecolumn.

<!doctype html>
<html lang = "en">
   <style>
      .box1{background:green;}
      .box2{background:blue;}
      .box3{background:red;}
      .box4{background:magenta;}
      .box5{background:yellow;}
      .box6{background:pink;}
      
      .box{
         font-size:35px;
         padding:15px;
      }
      .container{
         display:inline-flex;
         border:3px solid black;
         flex-direction:column;
      }
   </style>
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
         <div class = "box box4">four</div>
         <div class = "box box5">five</div>
         <div class = "box box6">six</div>
      </div>
   </body>
</html>

Producirá el siguiente resultado:

columna inversa

Al pasar este valor al direction propiedad, los elementos del contenedor están dispuestos verticalmente de abajo hacia arriba como se muestra a continuación.

El siguiente ejemplo demuestra el resultado de pasar el valor column-reversea la propiedad flex-direction . Aquí, estamos creando seis cajas con diferentes colores con el valor de dirección flexiblecolumn-reverse.

<!doctype html>
<html lang = "en">
   <style>
      .box1{background:green;}
      .box2{background:blue;}
      .box3{background:red;}
      .box4{background:magenta;}
      .box5{background:yellow;}
      .box6{background:pink;}
      
      .box{
         font-size:35px;
         padding:15px;
      }
      .container{
         display:inline-flex;
         border:3px solid black;
         flex-direction:column-reverse;
      }
   </style>
   
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
         <div class = "box box4">four</div>
         <div class = "box box5">five</div>
         <div class = "box box6">six</div>
      </div>
   </body>
</html>

Producirá el siguiente resultado:

Generalmente, en caso de espacio insuficiente para el contenedor, el resto de los elementos flexibles se ocultarán como se muestra a continuación.

los flex-wrap La propiedad se usa para especificar los controles si el contenedor flexible es de una sola línea o de varias líneas.

usage -

flex-wrap: nowrap | wrap | wrap-reverse
flex-direction: column | column-reverse

Esta propiedad acepta los siguientes valores:

  • wrap - En caso de que no haya suficiente espacio para ellos, los elementos del contenedor (flexitems) se envolverán en líneas flexibles adicionales de arriba a abajo.

  • wrap-reverse - En caso de que no haya suficiente espacio para ellos, los elementos del contenedor (elementos flexibles) se envolverán en líneas flexibles adicionales de abajo hacia arriba.

Ahora veremos cómo utilizar el wrap propiedad, con ejemplos.

envolver

Al pasar el valor wrap a la propiedad flex-wrap, los elementos del contenedor están dispuestos horizontalmente de izquierda a derecha como se muestra a continuación.

El siguiente ejemplo demuestra el resultado de pasar el valor wrapa la propiedad flex-wrap . Aquí, estamos creando seis cajas con diferentes colores con el valor de dirección flexiblerow.

<!doctype html>
<html lang = "en">
   <style>
      .box1{background:green;}
      .box2{background:blue;}
      .box3{background:red;}
      .box4{background:magenta;}
      .box5{background:yellow;}
      .box6{background:pink;}
      
      .box{
         font-size:35px;
         padding:15px;
         width:100px;
      }
      .container{
         display:flex;
         border:3px solid black;
         flex-direction:row;
         flex-wrap:wrap;
      }
   </style>
   
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
         <div class = "box box4">four</div>
         <div class = "box box5">five</div>
         <div class = "box box6">six</div>
      </div>
   </body>
</html>

Producirá el siguiente resultado:

envolver-revertir

Al pasar el valor wrap-reverse a la propiedad flex-wrap, los elementos del contenedor están dispuestos horizontalmente de izquierda a derecha como se muestra a continuación.

El siguiente ejemplo demuestra el resultado de pasar el valor wrap-reversea la propiedad flex-wrap . Aquí, estamos creando seis cajas con diferentes colores con el valor de dirección flexiblerow.

<!doctype html>
<html lang = "en">
   <style>
      .box1{background:green;}
      .box2{background:blue;}
      .box3{background:red;}
      .box4{background:magenta;}
      .box5{background:yellow;}
      .box6{background:pink;}
      
      .box{
         font-size:35px;
         padding:15px;
         width:100px;
      }
      .container{
         display:flex;
         border:3px solid black;
         flex-direction:row;
         flex-wrap:wrap-reverse;
      }
   </style>
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
         <div class = "box box4">four</div>
         <div class = "box box5">five</div>
         <div class = "box box6">six</div>
      </div>
   </body>
</html>

Producirá el siguiente resultado:

envolver (columna)

Al pasar el valor wrap a la propiedad flex-wrap y el valor column a la propiedad flex-direction, los elementos del contenedor están dispuestos horizontalmente de izquierda a derecha como se muestra a continuación.

El siguiente ejemplo demuestra el resultado de pasar el valor wrap al flex-wrappropiedad. Aquí, estamos creando seis cajas con diferentes colores con el valor de dirección flexiblecolumn.

<!doctype html>
<html lang = "en">
   <style>
      .box1{background:green;}
      .box2{background:blue;}
      .box3{background:red;}
      .box4{background:magenta;}
      .box5{background:yellow;}
      .box6{background:pink;}
      
      .box{
         font-size:35px;
         padding:15px;
         width:100px;
      }
      .container{
         display:flex;
         border:3px solid black;
         flex-direction:column;
         flex-wrap:wrap;
         height:100vh;
      }
   </style>
   
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
         <div class = "box box4">four</div>
         <div class = "box box5">five</div>
         <div class = "box box6">six</div>
      </div>
   </body>
</html>

Producirá el siguiente resultado:

wrap-reverse (columna)

Al pasar el valor wrap-reverse a la propiedad flex-wrap y el valor column a la propiedad flex-direction, los elementos del contenedor están dispuestos horizontalmente de izquierda a derecha como se muestra a continuación.

El siguiente ejemplo demuestra el resultado de pasar el valor wrap-reversea la propiedad flex-wrap . Aquí, estamos creando seis cajas con diferentes colores y con el valor de dirección flexiblecolumn.

<!doctype html>
<html lang = "en">
   <style>
      .box1{background:green;}
      .box2{background:blue;}
      .box3{background:red;}
      .box4{background:magenta;}
      .box5{background:yellow;}
      .box6{background:pink;}
      
      .box{
         font-size:35px;
         padding:15px;
         width:100px;
      }
      .container{
         display:flex;
         border:3px solid black;
         flex-direction:column;
         flex-wrap:wrap-reverse;
         height:100vh;
      }
   </style>
   
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
         <div class = "box box4">four</div>
         <div class = "box box5">five</div>
         <div class = "box box6">six</div>
      </div>
   </body>
</html>

Producirá el siguiente resultado:

A menudo, puede observar un espacio adicional que queda en el contenedor después de organizar los elementos flexibles como se muestra a continuación.

Usando la propiedad justify-content, puede alinear el contenido a lo largo del eje principal distribuyendo el espacio adicional según lo previsto. También puede ajustar la alineación de los elementos flexibles, en caso de que desborden la línea.

usage -

justify-content: flex-start | flex-end | center | space-between | space-around| space-evenly;

Esta propiedad acepta los siguientes valores:

  • flex-start - Los elementos flexibles se colocan al inicio del contenedor.

  • flex-end - Los artículos flexibles se colocan al final del contenedor.

  • center - Los elementos flexibles se colocan en el centro del contenedor, donde el espacio extra se distribuye por igual al inicio y al final de los elementos flexibles.

  • space-between - El espacio extra se distribuye por igual entre los elementos flexibles.

  • space-around - El espacio extra se distribuye equitativamente entre los elementos flexibles de modo que el espacio entre los bordes del contenedor y su contenido sea la mitad del espacio entre los elementos flexibles.

Ahora, veremos cómo usar la propiedad justify-content, con ejemplos.

inicio flexible

Al pasar este valor a la propiedad justify-content, los elementos flexibles se colocan al comienzo del contenedor.

El siguiente ejemplo demuestra el resultado de pasar el valor flex-start al justify-content propiedad.

<!doctype html>
<html lang = "en">
   <style>
      .box1{background:green;}
      .box2{background:blue;}
      .box3{background:red;}
      .box4{background:magenta;}
      .box5{background:yellow;}
      .box6{background:pink;}
      
      .box{
         font-size:35px;
         padding:15px;
      }
      .container{
         display:flex;
         border:3px solid black;
         justify-content:flex-start;
      }
   </style>
   
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
         <div class = "box box4">four</div>
         <div class = "box box5">five</div>
         <div class = "box box6">six</div>
      </div>
   </body>
</html>

Producirá el siguiente resultado:

extremo flexible

Al pasar este valor a la propiedad justify-content, los elementos flexibles se colocan al final del contenedor.

El siguiente ejemplo demuestra el resultado de pasar el valor flex-end al justify-content propiedad.

<!doctype html>
<html lang = "en">
   <style>
      .box1{background:green;}
      .box2{background:blue;}
      .box3{background:red;}
      .box4{background:magenta;}
      .box5{background:yellow;}
      .box6{background:pink;}
      
      .box{
         font-size:35px;
         padding:15px;
      }
      .container{
         display:flex;
         border:3px solid black;
         justify-content:flex-end;
      }
   </style>
   
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
         <div class = "box box4">four</div>
         <div class = "box box5">five</div>
         <div class = "box box6">six</div>
      </div>
   </body>
</html>

Producirá el siguiente resultado:

centrar

Al pasar este valor a la propiedad justify-content, los elementos flexibles se colocan en el centro del contenedor, donde el espacio adicional se distribuye por igual al inicio y al final de los elementos flexibles.

El siguiente ejemplo demuestra el resultado de pasar el valor center al justify-content propiedad.

<!doctype html>
<html lang = "en">
   <style>
      .box1{background:green;}
      .box2{background:blue;}
      .box3{background:red;}
      .box4{background:magenta;}
      .box5{background:yellow;}
      .box6{background:pink;}
      
      .box{
         font-size:35px;
         padding:15px;
      }
      .container{
         display:flex;
         border:3px solid black;
         justify-content:center;
      }
   </style>
   
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
         <div class = "box box4">four</div>
         <div class = "box box5">five</div>
         <div class = "box box6">six</div>
      </div>
   </body>
</html>

Producirá el siguiente resultado:

espacio entre

Al pasar este valor a la propiedad justify-content, el espacio extra se distribuye equitativamente entre los elementos flexibles de modo que el espacio entre dos elementos flexibles sea el mismo y el inicio y el final de los elementos flexibles toquen los bordes del contenedor.

El siguiente ejemplo demuestra el resultado de pasar el valor space-between al justify-content propiedad.

<!doctype html>
<html lang = "en">
   <style>
      .box1{background:green;}
      .box2{background:blue;}
      .box3{background:red;}
      .box4{background:magenta;}
      .box5{background:yellow;}
      .box6{background:pink;}
      
      .box{
         font-size:35px;
         padding:15px;
      }
      .container{
         display:flex;
         border:3px solid black;
         justify-content:space-between;
      }
   </style>
   
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
         <div class = "box box4">four</div>
         <div class = "box box5">five</div>
         <div class = "box box6">six</div>
      </div>
   </body>
</html>

Producirá el siguiente resultado:

espacio alrededor

Al pasar este valor a la propiedad justify-content, el espacio extra se distribuye equitativamente entre los elementos flexibles de modo que el espacio entre dos elementos flexibles sea el mismo. Sin embargo, el espacio entre los bordes del contenedor y su contenido (el inicio y el final de los elementos flexibles) es la mitad del espacio entre los elementos flexibles.

El siguiente ejemplo demuestra el resultado de pasar el valor space-around al justify-content propiedad.

<!doctype html>
<html lang = "en">
   <style>
      .box1{background:green;}
      .box2{background:blue;}
      .box3{background:red;}
      .box4{background:magenta;}
      .box5{background:yellow;}
      .box6{background:pink;}
      
      .box{
         font-size:35px;
         padding:15px;
      }
      .container{
         display:flex;
         border:3px solid black;
         justify-content:space-around;
      }
   </style>
   
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
         <div class = "box box4">four</div>
         <div class = "box box5">five</div>
         <div class = "box box6">six</div>
      </div>
   </body>
</html>

Producirá el siguiente resultado:

espacio uniforme

Al pasar este valor a la propiedad justify-content, el espacio extra se distribuye equitativamente entre los elementos flexibles de modo que el espacio entre dos elementos flexibles sea el mismo (incluido el espacio hasta los bordes).

El siguiente ejemplo demuestra el resultado de pasar el valor space-evenly al justify-content propiedad.

<!doctype html>
<html lang = "en">
   <style>
      .box1{background:green;}
      .box2{background:blue;}
      .box3{background:red;}
      .box4{background:magenta;}
      .box5{background:yellow;}
      .box6{background:pink;}
      
      .box{
         font-size:35px;
         padding:15px;
      }
      .container{
         display:flex;
         border:3px solid black;
         justify-content:space-evenly;
      }
   </style>
   
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
         <div class = "box box4">four</div>
         <div class = "box box5">five</div>
         <div class = "box box6">six</div>
      </div>
   </body>
</html>

Producirá el siguiente resultado:

los align-items la propiedad es la misma que justify content. Pero aquí, los elementos se alinearon a través del acceso cruzado (verticalmente).

Usage -

align-items: flex-start | flex-end | center | baseline | stretch;

Esta propiedad acepta los siguientes valores:

  • flex-start - Los elementos flexibles se alinearon verticalmente en la parte superior del contenedor.

  • flex-end - Los elementos flexibles se alinearon verticalmente en la parte inferior del contenedor.

  • flex-center - Los elementos flexibles se alinearon verticalmente en el centro del contenedor.

  • stretch - Los elementos flexibles se alinearon verticalmente de manera que llenen todo el espacio vertical del contenedor.

  • baseline - Los elementos flexibles se alinearon de manera que la línea base de su texto se alineara a lo largo de una línea horizontal.

inicio flexible

Al pasar este valor a la propiedad align-items, los elementos flexibles se alinearon verticalmente en la parte superior del contenedor.

El siguiente ejemplo demuestra el resultado de pasar el valor flex-start al align-items propiedad.

<!doctype html>
<html lang = "en">
   <style>
      .box1{background:green;}
      .box2{background:blue;}
      .box3{background:red;}
      .box4{background:magenta;}
      .box5{background:yellow;}
      .box6{background:pink;}
      
      .box{
         font-size:35px;
         padding:15px;
      }
      .container{
         display:flex;
         height:100vh;
         align-items:flex-start;
      }
   </style>
   
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
         <div class = "box box4">four</div>
         <div class = "box box5">five</div>
         <div class = "box box6">six</div>
      </div>
   </body>
</html>

Producirá el siguiente resultado:

extremo flexible

Al pasar este valor a la propiedad align-items, los elementos flexibles se alinean verticalmente en la parte inferior del contenedor.

El siguiente ejemplo demuestra el resultado de pasar el valor flex-end al align-items propiedad.

<!doctype html>
<html lang = "en">
   <style>
      .box1{background:green;}
      .box2{background:blue;}
      .box3{background:red;}
      .box4{background:magenta;}
      .box5{background:yellow;}
      .box6{background:pink;}
      
      .box{
         font-size:35px;
         padding:15px;
      }
      .container{
         display:flex;
         height:100vh;
         align-items:flex-end;
      }
   </style>
   
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
         <div class = "box box4">four</div>
         <div class = "box box5">five</div>
         <div class = "box box6">six</div>
      </div>
   </body>
</html>

Producirá el siguiente resultado:

centrar

Al pasar este valor a la propiedad align-items, los elementos flexibles están alineados verticalmente en el centro del contenedor.

El siguiente ejemplo demuestra el resultado de pasar el valor flex-center al align-items propiedad.

<!doctype html>
<html lang = "en">
   <style>
      .box1{background:green;}
      .box2{background:blue;}
      .box3{background:red;}
      .box4{background:magenta;}
      .box5{background:yellow;}
      .box6{background:pink;}
      
      .box{
         font-size:35px;
         padding:15px;
      }
      .container{
         display:flex;
         height:100vh;
         align-items:center;
      }
   </style>
   
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
         <div class = "box box4">four</div>
         <div class = "box box5">five</div>
         <div class = "box box6">six</div>
      </div>
   </body>
</html>

Producirá el siguiente resultado:

tramo

Al pasar este valor a la propiedad align-items, los elementos flexibles están alineados verticalmente de modo que llenen todo el espacio vertical del contenedor.

El siguiente ejemplo demuestra el resultado de pasar el valor stretch al align-items propiedad.

<!doctype html>
<html lang = "en">
   <style>
      .box1{background:green;}
      .box2{background:blue;}
      .box3{background:red;}
      .box4{background:magenta;}
      .box5{background:yellow;}
      .box6{background:pink;}
      
      .box{
         font-size:35px;
         padding:15px;
      }
      .container{
         display:flex;
         height:100vh;
         align-items:stretch;
      }
   </style>
   
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
         <div class = "box box4">four</div>
         <div class = "box box5">five</div>
         <div class = "box box6">six</div>
      </div>
   </body>
</html>

Producirá el siguiente resultado:

base

Al pasar este valor a la propiedad align-items, los elementos flexibles se alinean de modo que la línea de base de su texto se alinee a lo largo de una línea horizontal.

El siguiente ejemplo demuestra el resultado de pasar el valor baseline al align-items propiedad.

<!doctype html>
<html lang = "en">
   <style>
      .box1{background:green;}
      .box2{background:blue;}
      .box3{background:red;}
      .box4{background:magenta;}
      .box5{background:yellow;}
      .box6{background:pink;}
      
      .box{
         font-size:35px;
         padding:15px;
      }
      .container{
         display:flex;
         height:100vh;
         align-items:baseline;
      }
   </style>
   
   <body>
      <div class = "container">
      <div class = "box box1">One</div>
      <div class = "box box2">two</div>
      <div class = "box box3">three</div>
      <div class = "box box4">four</div>
      <div class = "box box5">five</div>
      <div class = "box box6">six</div>
      </div>
   </body>
</html>

Producirá el siguiente resultado:

En caso de que el contenedor flexible tenga varias líneas (cuando, flex-wrap: wrap), la propiedad align-content define la alineación de cada línea dentro del contenedor.

Usage -

align-content: flex-start | flex-end | center | space-between | space-around | stretch;

Esta propiedad acepta los siguientes valores:

  • stretch - Las líneas en el contenido se estirarán para llenar el espacio restante.

  • flex-start - Todas las líneas del contenido se empaquetan al inicio del contenedor.

  • flex-end - Todas las líneas del contenido se empaquetan al final del contenedor.

  • center - Todas las líneas del contenido se empaquetan en el centro del contenedor.

  • space-between - El espacio extra se distribuye entre las líneas de manera uniforme.

  • space-around - El espacio adicional se distribuye entre las líneas de manera uniforme con el mismo espacio alrededor de cada línea (incluidas la primera y la última línea)

centrar

Al pasar este valor a la propiedad align-content, todas las líneas se empaquetan en el centro del contenedor.

El siguiente ejemplo demuestra el resultado de pasar el valor center al align-content propiedad.

<!doctype html>
<html lang = "en">
   <style>
      .box1{background:green;}
      .box2{background:blue;}
      .box3{background:red;}
      .box4{background:magenta;}
      .box5{background:yellow;}
      .box6{background:pink;}
      
      .box{
         font-size:25px;
         padding:15px;
         width:43%;
      }
      .container{
         display:flex;
         height:100vh;
         flex-wrap:wrap;
         align-content:center;
      }
   </style>
   
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
         <div class = "box box4">four</div>
         <div class = "box box5">five</div>
         <div class = "box box6">six</div>
      </div>
   </body>
</html>

Producirá el siguiente resultado:

inicio flexible

Al pasar este valor a la propiedad align-content, todas las líneas se empaquetan al inicio del contenedor.

El siguiente ejemplo demuestra el resultado de pasar el valor flex-start al align-content propiedad.

<!doctype html>
<html lang = "en">
   <style>
      .box1{background:green;}
      .box2{background:blue;}
      .box3{background:red;}
      .box4{background:magenta;}
      .box5{background:yellow;}
      .box6{background:pink;}
      
      .box{
         font-size:25px;
         padding:15px;
         width:40%;
      }
      .container{
         display:flex;
         height:100vh;
         flex-wrap:wrap;
         align-content:flex-start;
      }
   </style>
   
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
         <div class = "box box4">four</div>
         <div class = "box box5">five</div>
         <div class = "box box6">six</div>
      </div>
   </body>
</html>

Producirá el siguiente resultado:

extremo flexible

Al pasar este valor a la propiedad align-content, todas las líneas se empaquetan al final del contenedor.

El siguiente ejemplo demuestra el resultado de pasar el valor flex-end al align-content propiedad.

<!doctype html>
<html lang = "en">
   <style>
      .box1{background:green;}
      .box2{background:blue;}
      .box3{background:red;}
      .box4{background:magenta;}
      .box5{background:yellow;}
      .box6{background:pink;}
      
      .box{
         font-size:25px;
         padding:15px;
         width:40%;
      }
      .container{
         display:flex;
         height:100vh;
         flex-wrap:wrap;
         align-content:flex-end;
      }
   </style>
   
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
         <div class = "box box4">four</div>
         <div class = "box box5">five</div>
         <div class = "box box6">six</div>
      </div>
   </body>
</html>

Producirá el siguiente resultado:

tramo

Al pasar este valor a la propiedad align-content, las líneas se estirarán para llenar el espacio restante.

El siguiente ejemplo demuestra el resultado de pasar el valor stretch al align-content propiedad.

<!doctype html>
<html lang = "en">
   <style>
      .box1{background:green;}
      .box2{background:blue;}
      .box3{background:red;}
      .box4{background:magenta;}
      .box5{background:yellow;}
      .box6{background:pink;}
      
      .box{
         font-size:25px;
         padding:15px;
         width:40;
      }
      .container{
         display:flex;
         height:100vh;
         flex-wrap:wrap;
         align-content:stretch;
      }
   </style>
   
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
         <div class = "box box4">four</div>
         <div class = "box box5">five</div>
         <div class = "box box6">six</div>
      </div>
   </body>
</html>

Producirá el siguiente resultado:

espacio alrededor

Al pasar este valor a la propiedad align-content, el espacio adicional se distribuye entre las líneas de manera uniforme con el mismo espacio alrededor de cada línea (incluidas la primera y la última línea).

El siguiente ejemplo demuestra el resultado de pasar el valor space-around al align-content propiedad.

<!doctype html>
<html lang = "en">
   <style>
      .box1{background:green;}
      .box2{background:blue;}
      .box3{background:red;}
      .box4{background:magenta;}
      .box5{background:yellow;}
      .box6{background:pink;}
      
      .box{
         font-size:25px;
         padding:15px;
         width:40%;
      }
      .container{
         display:flex;
         height:100vh;
         flex-wrap:wrap;
         align-content:space-around;
      }
   </style>
   
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
         <div class = "box box4">four</div>
         <div class = "box box5">five</div>
         <div class = "box box6">six</div>
      </div>
   </body>
</html>

Producirá el siguiente resultado:

espacio entre

Al pasar este valor a la propiedad align-content, el espacio extra se distribuye entre las líneas de manera uniforme, donde la primera línea estará en la parte superior y la última línea estará en la parte inferior del contenedor.

El siguiente ejemplo demuestra el resultado de pasar el valor space-between al align-content propiedad.

<!doctype html>
<html lang = "en">
   <style>
      .box1{background:green;}
      .box2{background:blue;}
      .box3{background:red;}
      .box4{background:magenta;}
      .box5{background:yellow;}
      .box6{background:pink;}
      
      .box{
         font-size:25px;
         padding:15px;
         width:40%;
      }
      .container{
         display:flex;
         height:100vh;
         flex-wrap:wrap;
         align-content:space-between;
      }
   </style>
   
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
         <div class = "box box4">four</div>
         <div class = "box box5">five</div>
         <div class = "box box6">six</div>
      </div>
   </body>
</html>

Producirá el siguiente resultado:

los flex-order La propiedad se utiliza para definir el orden del elemento flexbox.

El siguiente ejemplo demuestra la orderpropiedad. Aquí estamos creando seis cajas de colores con las etiquetas uno, dos, tres, cuatro, cinco, seis, dispuestas en el mismo orden, y las estamos reordenando en el orden uno, dos, cinco, seis, tres, cuatro, usando el propiedad de orden flexible.

<!doctype html>
<html lang = "en">
   <style>
      .box{
         font-size:35px;
         padding:15px;
      }
      .box1{background:green;}
      .box2{background:blue;}
      .box3{background:red; order:1}
      .box4{background:magenta; order:2}
      .box5{background:yellow;}
      .box6{background:pink;}
      
      .container{
         display:inline-flex;
         border:3px solid black;
         flex-direction:rows;
         flex-wrap:wrap;
      }
   </style>
   
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
         <div class = "box box4">four</div>
         <div class = "box box5">five</div>
         <div class = "box box6">six</div>
      </div>
   </body>
</html>

Producirá el siguiente resultado:

- ve ordenando

También puede asignar valores –ve al orden como se muestra a continuación.

<!doctype html>
<html lang = "en">
   <style>
      .box{
         font-size:35px;
         padding:15px;
      }
      .box1{background:green;}
      .box2{background:blue;}
      .box3{background:red; order:-1}
      .box4{background:magenta; order:-2}
      .box5{background:yellow;}
      .box6{background:pink;}
      
      .container{
         display:inline-flex;
         border:3px solid black;
         flex-direction:row;
         flex-wrap:wrap;
      }
   </style>
   
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
         <div class = "box box4">four</div>
         <div class = "box box5">five</div>
         <div class = "box box6">six</div>
      </div>
   </body>
</html>

Producirá el siguiente resultado:

base flexible

Usamos el flex-basis propiedad para definir el tamaño predeterminado del elemento flexible antes de que se distribuya el espacio.

El siguiente ejemplo demuestra el uso de la propiedad de base flexible. Aquí estamos creando 3 cajas de colores y fijando su tamaño a 150 px.

<!doctype html>
<html lang = "en">
   <style>
      .box{
         font-size:15px;
         padding:15px;
      }
      .box1{background:green; flex-basis:150px; }
      .box2{background:blue; flex-basis:150px;}
      .box3{background:red; flex-basis:150px;}
      
      .container{
         display:flex;
         height:100vh;
         align-items:flex-start;
      }
   </style>
   
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
      </div>
   </body>
</html>

Producirá el siguiente resultado:

crecimiento flexible

Usamos el flex-grow propiedad para establecer el flex-growfactor. En caso de exceso de espacio en el contenedor, especifica cuánto debe crecer un elemento flexible en particular.

<!doctype html>
<html lang = "en">
   <style>
      .box{
         font-size:15px;
         padding:15px;
      }
      .box1{background:green; flex-grow:10; flex-basis:100px; }
      .box2{background:blue; flex-grow:1; flex-basis:100px; }
      .box3{background:red; flex-grow:1; flex-basis:100px; }
      
      .container{
         display:flex;
         height:100vh;
         align-items:flex-start;
      }
   </style>
   
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
      </div>
   </body>
</html>

Producirá el siguiente resultado:

flexión-encogimiento

Usamos la propiedad flex-shrink que se usa para establecer la flexión shrink-factor. En caso de que no haya suficiente espacio en el contenedor, especifica cuánto debe encogerse un elemento flexible.

<!doctype html>
<html lang = "en">
   <style>
      .box{
         font-size:15px;
         padding:15px;
      }
      .box1{background:green; flex-basis:200px; flex-shrink:10}
      .box2{background:blue; flex-basis:200px; flex-shrink:1}
      .box3{background:red; flex-basis:200px; flex-shrink:1}
      
      .container{
         display:flex;
         height:100vh;
         align-items:flex-start;
      }
   </style>
   
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
      </div>
   </body>
</html>

Producirá el siguiente resultado:

flexionar

Existe una forma abreviada de establecer valores para estas tres propiedades a la vez; se llamaflex. Con esta propiedad, puede establecer valores para flex-grow, flex-shrink y valores de base flexible a la vez. Aquí está la sintaxis de esta propiedad.

.item {
   flex: none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]
}

Esta propiedad es similar a align-items, pero aquí se aplica a elementos flexibles individuales.

Usage -

align-self: auto | flex-start | flex-end | center | baseline | stretch;

Esta propiedad acepta los siguientes valores:

  • flex-start - El artículo flexible se alineará verticalmente en la parte superior del contenedor.

  • flex-end - El artículo flexible se alineará verticalmente en la parte inferior del contenedor.

  • flex-center - El artículo flexible se alineará verticalmente en el centro del contenedor.

  • Stretch - El elemento flexible se alineará verticalmente de manera que ocupe todo el espacio vertical del contenedor.

  • baseline - El elemento flexible se alineará en la línea base del eje transversal.

inicio flexible

Al pasar este valor a la propiedad align-self, un elemento flexible particular se alineará verticalmente en la parte superior del contenedor.

El siguiente ejemplo demuestra el resultado de pasar el valor flex-start al align-self propiedad.

<!doctype html>
<html lang = "en">
   <style>
      .box1{background:green;}
      .box2{background:blue;}
      .box3{background:red;}
      .box4{background:magenta; align-self:start;}
      .box5{background:yellow;}
      .box6{background:pink;}
      .box{
         font-size:35px;
         padding:15px;
      }
      .container{
         display:flex;
         height:100vh;
         border:3px solid black;
         align-items:flex-start;
      }
   </style>
   
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
         <div class = "box box4">four</div>
         <div class = "box box5">five</div>
         <div class = "box box6">six</div>
      </div>
   </body>
</html>

Producirá el siguiente resultado:

extremo flexible

Al pasar este valor a la propiedad align-self, un elemento flexible en particular se alineará verticalmente en la parte inferior del contenedor.

El siguiente ejemplo demuestra el resultado de pasar el valor flex-end al align-self propiedad.

<!doctype html>
<html lang = "en">
   <style>
      .box1{background:green;}
      .box2{background:blue;}
      .box3{background:red;}
      .box4{background:magenta; align-self:flex-end;}
      .box5{background:yellow;}
      .box6{background:pink;}
      .box{
         font-size:35px;
         padding:15px;
      }
      .container{
         display:flex;
         height:100vh;
         border:3px solid black;
         align-items:flex-start;
      }
   </style>
   
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
         <div class = "box box4">four</div>
         <div class = "box box5">five</div>
         <div class = "box box6">six</div>
      </div>
   </body>
</html>

Producirá el siguiente resultado:

centrar

Al pasar el valor center a la propiedad align-self, un elemento flexible en particular se alineará verticalmente en el centro del contenedor.

El siguiente ejemplo demuestra el resultado de pasar el valor center al align-self propiedad.

<!doctype html>
<html lang = "en">
   <style>
      .box1{background:green;}
      .box2{background:blue;}
      .box3{background:red;}
      .box4{background:magenta; align-self:center;}
      .box5{background:yellow;}
      .box6{background:pink;}
      .box{
         font-size:35px;
         padding:15px;
      }
      .container{
         display:flex;
         height:100vh;
         border:3px solid black;
         align-items:flex-start;
      }
   </style>
   
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
         <div class = "box box4">four</div>
         <div class = "box box5">five</div>
         <div class = "box box6">six</div>
      </div>
   </body>
</html>

Producirá el siguiente resultado:

tramo

Al pasar este valor a la propiedad align-self, un elemento flexible en particular, se alineará verticalmente de modo que llene todo el espacio vertical del contenedor.

El siguiente ejemplo demuestra el resultado de pasar el valor de extensión a la align-self propiedad.

<!doctype html>
<html lang = "en">
   <style>
      .box1{background:green;}
      .box2{background:blue;}
      .box3{background:red;}
      .box4{background:magenta; align-self:stretch;}
      .box5{background:yellow;}
      .box6{background:pink;}
      .box{
         font-size:35px;
         padding:15px;
      }
      .container{
         display:flex;
         height:100vh;
         border:3px solid black;
         align-items:flex-start;
      }
   </style>
   
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
         <div class = "box box4">four</div>
         <div class = "box box5">five</div>
         <div class = "box box6">six</div>
      </div>
   </body>
</html>

Producirá el siguiente resultado: