Flex

Administre rápidamente el diseño, la alineación y el tamaño de las columnas de la cuadrícula, la navegación, los componentes y más con un conjunto completo de utilidades receptivas de Flexbox. Para implementaciones más complejas, puede ser necesario CSS personalizado.

Habilitar comportamientos flexibles

Aplique display utilidades para crear un contenedor flexbox y transforme los elementos secundarios directos en elementos flexibles. Los contenedores y artículos flexibles se pueden modificar aún más con propiedades flexibles adicionales.

¡Soy un contenedor flexbox!
<div class="d-flex p-2 bd-highlight">I'm a flexbox container!</div>
¡Soy un contenedor flexbox en línea!
<div class="d-inline-flex p-2 bd-highlight">I'm an inline flexbox container!</div>

También existen variaciones sensibles para .d-flex y .d-inline-flex .

  • .d-flex
  • .d-inline-flex
  • .d-sm-flex
  • .d-sm-inline-flex
  • .d-md-flex
  • .d-md-inline-flex
  • .d-lg-flex
  • .d-lg-inline-flex
  • .d-xl-flex
  • .d-xl-inline-flex

Dirección

Establezca la dirección de los elementos flexibles en un contenedor flexible con utilidades de dirección. En la mayoría de los casos, puede omitir la clase horizontal aquí como es el navegador predeterminado row . Sin embargo, puede encontrar situaciones en las que necesite establecer explícitamente este valor (como diseños receptivos).

Úselo .flex-row para establecer una dirección horizontal (el navegador predeterminado), o .flex-row-reverse para iniciar la dirección horizontal desde el lado opuesto.

Elemento flexible 1
Elemento flexible 2
Flex artículo 3
Elemento flexible 1
Elemento flexible 2
Flex artículo 3
<div class="d-flex flex-row bd-highlight mb-3">
  <div class="p-2 bd-highlight">Flex item 1</div>
  <div class="p-2 bd-highlight">Flex item 2</div>
  <div class="p-2 bd-highlight">Flex item 3</div>
</div>
<div class="d-flex flex-row-reverse bd-highlight">
  <div class="p-2 bd-highlight">Flex item 1</div>
  <div class="p-2 bd-highlight">Flex item 2</div>
  <div class="p-2 bd-highlight">Flex item 3</div>
</div>

Úselo .flex-column para establecer una dirección vertical o .flex-column-reverse para iniciar la dirección vertical desde el lado opuesto.

Elemento flexible 1
Elemento flexible 2
Flex artículo 3
Elemento flexible 1
Elemento flexible 2
Flex artículo 3
<div class="d-flex flex-column bd-highlight mb-3">
  <div class="p-2 bd-highlight">Flex item 1</div>
  <div class="p-2 bd-highlight">Flex item 2</div>
  <div class="p-2 bd-highlight">Flex item 3</div>
</div>
<div class="d-flex flex-column-reverse bd-highlight">
  <div class="p-2 bd-highlight">Flex item 1</div>
  <div class="p-2 bd-highlight">Flex item 2</div>
  <div class="p-2 bd-highlight">Flex item 3</div>
</div>

También existen variaciones de respuesta para flex-direction .

  • .flex-row
  • .flex-row-reverse
  • .flex-column
  • .flex-column-reverse
  • .flex-sm-row
  • .flex-sm-row-reverse
  • .flex-sm-column
  • .flex-sm-column-reverse
  • .flex-md-row
  • .flex-md-row-reverse
  • .flex-md-column
  • .flex-md-column-reverse
  • .flex-lg-row
  • .flex-lg-row-reverse
  • .flex-lg-column
  • .flex-lg-column-reverse
  • .flex-xl-row
  • .flex-xl-row-reverse
  • .flex-xl-column
  • .flex-xl-column-reverse

Justificar el contenido

Utilice las justify-content utilidades en los contenedores de flexbox para cambiar la alineación de los elementos flexibles en el eje principal (el eje x para comenzar, el eje y si flex-direction: column ). Elegir start (por defecto del navegador), end , center , between , o around .

Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
<div class="d-flex justify-content-start">...</div>
<div class="d-flex justify-content-end">...</div>
<div class="d-flex justify-content-center">...</div>
<div class="d-flex justify-content-between">...</div>
<div class="d-flex justify-content-around">...</div>

También existen variaciones de respuesta para justify-content .

  • .justify-content-start
  • .justify-content-end
  • .justify-content-center
  • .justify-content-between
  • .justify-content-around
  • .justify-content-sm-start
  • .justify-content-sm-end
  • .justify-content-sm-center
  • .justify-content-sm-between
  • .justify-content-sm-around
  • .justify-content-md-start
  • .justify-content-md-end
  • .justify-content-md-center
  • .justify-content-md-between
  • .justify-content-md-around
  • .justify-content-lg-start
  • .justify-content-lg-end
  • .justify-content-lg-center
  • .justify-content-lg-between
  • .justify-content-lg-around
  • .justify-content-xl-start
  • .justify-content-xl-end
  • .justify-content-xl-center
  • .justify-content-xl-between
  • .justify-content-xl-around

Alinear elementos

Use las align-items utilidades en los contenedores de flexbox para cambiar la alineación de los elementos flexibles en el eje transversal (el eje y para comenzar, el eje x si flex-direction: column ). Elegir start , end , center , baseline , o stretch (por defecto del navegador).

Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
<div class="d-flex align-items-start">...</div>
<div class="d-flex align-items-end">...</div>
<div class="d-flex align-items-center">...</div>
<div class="d-flex align-items-baseline">...</div>
<div class="d-flex align-items-stretch">...</div>

También existen variaciones de respuesta para align-items .

  • .align-items-start
  • .align-items-end
  • .align-items-center
  • .align-items-baseline
  • .align-items-stretch
  • .align-items-sm-start
  • .align-items-sm-end
  • .align-items-sm-center
  • .align-items-sm-baseline
  • .align-items-sm-stretch
  • .align-items-md-start
  • .align-items-md-end
  • .align-items-md-center
  • .align-items-md-baseline
  • .align-items-md-stretch
  • .align-items-lg-start
  • .align-items-lg-end
  • .align-items-lg-center
  • .align-items-lg-baseline
  • .align-items-lg-stretch
  • .align-items-xl-start
  • .align-items-xl-end
  • .align-items-xl-center
  • .align-items-xl-baseline
  • .align-items-xl-stretch

Alinearse

Utilice las align-self utilidades en los elementos de flexbox para cambiar individualmente su alineación en el eje transversal (el eje y para comenzar, el eje x si flex-direction: column ). Elija entre las mismas opciones que align-items : start , end , center , baseline , o stretch (por defecto del navegador).

Elemento flexible
Elemento flexible alineado
Elemento flexible
Elemento flexible
Elemento flexible alineado
Elemento flexible
Elemento flexible
Elemento flexible alineado
Elemento flexible
Elemento flexible
Elemento flexible alineado
Elemento flexible
Elemento flexible
Elemento flexible alineado
Elemento flexible
<div class="align-self-start">Aligned flex item</div>
<div class="align-self-end">Aligned flex item</div>
<div class="align-self-center">Aligned flex item</div>
<div class="align-self-baseline">Aligned flex item</div>
<div class="align-self-stretch">Aligned flex item</div>

También existen variaciones de respuesta para align-self .

  • .align-self-start
  • .align-self-end
  • .align-self-center
  • .align-self-baseline
  • .align-self-stretch
  • .align-self-sm-start
  • .align-self-sm-end
  • .align-self-sm-center
  • .align-self-sm-baseline
  • .align-self-sm-stretch
  • .align-self-md-start
  • .align-self-md-end
  • .align-self-md-center
  • .align-self-md-baseline
  • .align-self-md-stretch
  • .align-self-lg-start
  • .align-self-lg-end
  • .align-self-lg-center
  • .align-self-lg-baseline
  • .align-self-lg-stretch
  • .align-self-xl-start
  • .align-self-xl-end
  • .align-self-xl-center
  • .align-self-xl-baseline
  • .align-self-xl-stretch

Llenar

Utilice la .flex-fill clase en una serie de elementos hermanos para forzarlos a anchos iguales a su contenido (o anchos iguales si su contenido no supera sus cuadros de borde) mientras ocupa todo el espacio horizontal disponible.

Elemento flexible con mucho contenido
Elemento flexible
Elemento flexible
<div class="d-flex bd-highlight">
  <div class="p-2 flex-grow-1 bd-highlight">Flex item</div>
  <div class="p-2 bd-highlight">Flex item</div>
  <div class="p-2 bd-highlight">Third flex item</div>
</div>

También existen variaciones de respuesta para flex-fill .

  • .flex-fill
  • .flex-sm-fill
  • .flex-md-fill
  • .flex-lg-fill
  • .flex-xl-fill

Crecer y encogerse

Utilice las .flex-grow-* utilidades para alternar la capacidad de un elemento flexible de crecer para llenar el espacio disponible. En el siguiente ejemplo, los .flex-grow-1 elementos utilizan todo el espacio disponible que pueden, mientras que permiten que los dos elementos flexibles restantes tengan el espacio necesario.

Elemento flexible
Elemento flexible
Tercer artículo flexible
<div class="d-flex bd-highlight">
  <div class="p-2 flex-grow-1 bd-highlight">Flex item</div>
  <div class="p-2 bd-highlight">Flex item</div>
  <div class="p-2 bd-highlight">Third flex item</div>
</div>

Utilice las .flex-shrink-* utilidades para alternar la capacidad de un elemento flexible de encogerse si es necesario. En el siguiente ejemplo, el segundo elemento flexible con .flex-shrink-1 se ve obligado a ajustar su contenido a una nueva línea, "encogiéndose" para permitir más espacio para el elemento flexible anterior con .w-100 .

Elemento flexible
Elemento flexible
<div class="d-flex bd-highlight">
  <div class="p-2 w-100 bd-highlight">Flex item</div>
  <div class="p-2 flex-shrink-1 bd-highlight">Flex item</div>
</div>

También existen variaciones sensibles para flex-grow y flex-shrink .

  • .flex-{grow|shrink}-0
  • .flex-{grow|shrink}-1
  • .flex-sm-{grow|shrink}-0
  • .flex-sm-{grow|shrink}-1
  • .flex-md-{grow|shrink}-0
  • .flex-md-{grow|shrink}-1
  • .flex-lg-{grow|shrink}-0
  • .flex-lg-{grow|shrink}-1
  • .flex-xl-{grow|shrink}-0
  • .flex-xl-{grow|shrink}-1

Márgenes automáticos

Flexbox puede hacer cosas bastante impresionantes cuando mezcla alineaciones flexibles con márgenes automáticos. A continuación se muestran tres ejemplos de cómo controlar elementos flexibles mediante márgenes automáticos: predeterminado (sin margen automático), empujar dos elementos hacia la derecha ( .mr-auto ) y empujar dos elementos hacia la izquierda ( .ml-auto ).

Desafortunadamente, IE10 e IE11 no son compatibles con los márgenes automáticos en elementos flexibles cuyo padre tiene un justify-content valor no predeterminado . Consulte esta respuesta de StackOverflow para obtener más detalles.

Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
<div class="d-flex bd-highlight mb-3">
  <div class="p-2 bd-highlight">Flex item</div>
  <div class="p-2 bd-highlight">Flex item</div>
  <div class="p-2 bd-highlight">Flex item</div>
</div>

<div class="d-flex bd-highlight mb-3">
  <div class="mr-auto p-2 bd-highlight">Flex item</div>
  <div class="p-2 bd-highlight">Flex item</div>
  <div class="p-2 bd-highlight">Flex item</div>
</div>

<div class="d-flex bd-highlight mb-3">
  <div class="p-2 bd-highlight">Flex item</div>
  <div class="p-2 bd-highlight">Flex item</div>
  <div class="ml-auto p-2 bd-highlight">Flex item</div>
</div>

Con alinear elementos

Mover verticalmente un elemento de flexión a la parte superior o inferior de un recipiente mediante la mezcla align-items , flex-direction: column y margin-top: auto o margin-bottom: auto .

Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
<div class="d-flex align-items-start flex-column bd-highlight mb-3" style="height: 200px;">
  <div class="mb-auto p-2 bd-highlight">Flex item</div>
  <div class="p-2 bd-highlight">Flex item</div>
  <div class="p-2 bd-highlight">Flex item</div>
</div>

<div class="d-flex align-items-end flex-column bd-highlight mb-3" style="height: 200px;">
  <div class="p-2 bd-highlight">Flex item</div>
  <div class="p-2 bd-highlight">Flex item</div>
  <div class="mt-auto p-2 bd-highlight">Flex item</div>
</div>

Envolver

Cambia cómo se envuelven los artículos flexibles en un contenedor flexible. Elija entre no envolver en absoluto (el navegador predeterminado) con .flex-nowrap , envolver con .flex-wrap o envolver al revés con .flex-wrap-reverse .

Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
<div class="d-flex flex-nowrap">
  ...
</div>
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
<div class="d-flex flex-wrap">
  ...
</div>
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
<div class="d-flex flex-wrap-reverse">
  ...
</div>

También existen variaciones de respuesta para flex-wrap .

  • .flex-nowrap
  • .flex-wrap
  • .flex-wrap-reverse
  • .flex-sm-nowrap
  • .flex-sm-wrap
  • .flex-sm-wrap-reverse
  • .flex-md-nowrap
  • .flex-md-wrap
  • .flex-md-wrap-reverse
  • .flex-lg-nowrap
  • .flex-lg-wrap
  • .flex-lg-wrap-reverse
  • .flex-xl-nowrap
  • .flex-xl-wrap
  • .flex-xl-wrap-reverse

Orden

Cambie el orden visual de elementos flexibles específicos con un puñado de order utilidades. Solo proporcionamos opciones para hacer que un artículo sea el primero o el último, así como un restablecimiento para usar el orden DOM. Como order toma cualquier valor entero (por ejemplo, 5 ), agregue CSS personalizado para cualquier valor adicional necesario.

Primer artículo flexible
Segundo artículo flexible
Tercer artículo flexible
<div class="d-flex flex-nowrap bd-highlight">
  <div class="order-3 p-2 bd-highlight">First flex item</div>
  <div class="order-2 p-2 bd-highlight">Second flex item</div>
  <div class="order-1 p-2 bd-highlight">Third flex item</div>
</div>

También existen variaciones de respuesta para order .

  • .order-0
  • .order-1
  • .order-2
  • .order-3
  • .order-4
  • .order-5
  • .order-6
  • .order-7
  • .order-8
  • .order-9
  • .order-10
  • .order-11
  • .order-12
  • .order-sm-0
  • .order-sm-1
  • .order-sm-2
  • .order-sm-3
  • .order-sm-4
  • .order-sm-5
  • .order-sm-6
  • .order-sm-7
  • .order-sm-8
  • .order-sm-9
  • .order-sm-10
  • .order-sm-11
  • .order-sm-12
  • .order-md-0
  • .order-md-1
  • .order-md-2
  • .order-md-3
  • .order-md-4
  • .order-md-5
  • .order-md-6
  • .order-md-7
  • .order-md-8
  • .order-md-9
  • .order-md-10
  • .order-md-11
  • .order-md-12
  • .order-lg-0
  • .order-lg-1
  • .order-lg-2
  • .order-lg-3
  • .order-lg-4
  • .order-lg-5
  • .order-lg-6
  • .order-lg-7
  • .order-lg-8
  • .order-lg-9
  • .order-lg-10
  • .order-lg-11
  • .order-lg-12
  • .order-xl-0
  • .order-xl-1
  • .order-xl-2
  • .order-xl-3
  • .order-xl-4
  • .order-xl-5
  • .order-xl-6
  • .order-xl-7
  • .order-xl-8
  • .order-xl-9
  • .order-xl-10
  • .order-xl-11
  • .order-xl-12

Alinear contenido

Use align-content utilidades en contenedores FlexBox para alinear los elementos de flexión juntos en el eje transversal. Elegir start (por defecto del navegador), end , center , between , around , o stretch . Para demostrar estas utilidades, hemos reforzado flex-wrap: wrap y aumentado la cantidad de elementos flexibles.

¡Aviso! Esta propiedad no tiene ningún efecto en filas individuales de elementos flexibles.

Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
<div class="d-flex align-content-start flex-wrap">
  ...
</div>
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
<div class="d-flex align-content-start flex-wrap">
  ...
</div>
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
<div class="d-flex align-content-center flex-wrap">...</div>
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
<div class="d-flex align-content-between flex-wrap">...</div>
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
<div class="d-flex align-content-around flex-wrap">...</div>
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
Elemento flexible
<div class="d-flex align-content-stretch flex-wrap">...</div>

También existen variaciones de respuesta para align-content .

  • .align-content-start
  • .align-content-end
  • .align-content-center
  • .align-content-around
  • .align-content-stretch
  • .align-content-sm-start
  • .align-content-sm-end
  • .align-content-sm-center
  • .align-content-sm-around
  • .align-content-sm-stretch
  • .align-content-md-start
  • .align-content-md-end
  • .align-content-md-center
  • .align-content-md-around
  • .align-content-md-stretch
  • .align-content-lg-start
  • .align-content-lg-end
  • .align-content-lg-center
  • .align-content-lg-around
  • .align-content-lg-stretch
  • .align-content-xl-start
  • .align-content-xl-end
  • .align-content-xl-center
  • .align-content-xl-around
  • .align-content-xl-stretch