Mozilla's getting a new look. What do you think? https://mzl.la/brandsurvey

flex-basis

Este articulo necesita una revisión editorial. Cómo puedes ayudar.

Resúmen

La propiedad de CSS flex-basis especifíca la base flexible, la cual es el tamaño inicial de un elemento flexible. Ésta propiedad determina el tamaño de una caja de contenidos a no ser que se haya especificado de otra forma usando box-sizing.

Valor inicialauto
Applies toflex items, including in-flow pseudo-elements
Heredableno
Percentagesrefer to the flex container's inner main size
Mediavisual
Valor calculadoas specified, but with relative lengths converted into absolute lengths
Animatableyes, as a length, percentage or calc(); when both values are lengths, they are interpolated as lengths; when both values are percentages, they are interpolated as percentages; otherwise, both values are converted into a calc() function that is the sum of a length and a percentage (each possibly zero), and these calc() functions have each half interpolated as real numbers.
Canonical orderthe length or percentage before the keyword, if both are present

Sintaxis

/* Especificar <'width'> */
flex-basis: 10em;      
flex-basis: 3px;
flex-basis: auto;

/* Palabras clave de dimensionamiento intrínseco */
flex-basis: fill;
flex-basis: max-content;
flex-basis: min-content;
flex-basis: fit-content;

/* Tamaño automático basado en el contenido del elemento flexible */
flex-basis: content;

/* Global values */
flex-basis: inherit;
flex-basis: initial;
flex-basis: unset;

Valores

width
Definido por un número seguido de una unidad absoluta tal como px, mmpt, o un porcentaje del tamaño principal de un contenedor flexible padre. Los valores negativos no son válidos.
content
Indica el dimensionamiento automático, basado en el contenido del elemento flexible.
Nota: Tenga en cuenta que éste valor no fue presentado en el lanzamiento inicial del Diseño de Caja Flexible, así que no será soportado por algunas implementaciones antiguas. El efecto equivalente puede tenerlo usando auto junto con un tamaño principal (widthheight) en auto.

Nota: Breve historia

  • Originalmente, "flex-basis:auto" significa "observa mi propiedad width o height".
  • Después, flex-basis:auto fue cambiado a automatic-sizing, y fue introducido "main-size" como palabra clave "observa mi propiedad width o height". Ésto fue implementado en bug 1032922.
  • Después, ese cambio fue revertido en bug 1093316, y nuevamente "auto" significa "observa mi propiedad width o height"; y se está introduciendo una nueva palabra clave 'content' para provocar un dimensionamiento automático. (bug 1105111 incluye la inclusión de dicha palabra clave).

Sintaxis Formal

content | <'width'>

Ejemplo

HTML

<ul class="container">
  <li class="flex flex1">1: flex-basis test</li>
  <li class="flex flex2">2: flex-basis test</li>
  <li class="flex flex3">3: flex-basis test</li>
  <li class="flex flex4">4: flex-basis test</li>
  <li class="flex flex5">5: flex-basis test</li>
</ul>

<ul class="container">
  <li class="flex flex6">6: flex-basis test</li>
</ul>

CSS

.container {
  font-family: arial, sans-serif;
  margin: 0;
  padding: 0;
  list-style-type: none;
  display: flex;
  flex-wrap: wrap;
}

.flex {
  background: #6AB6D8;
  padding: 10px;
  margin-bottom: 50px;
  border: 3px solid #2E86BB;
  color: white;
  font-size: 20px;
  text-align: center;
  position: relative;
}

.flex:after {
  position: absolute;
  z-index: 1;
  left: 0;
  top: 100%;
  margin-top: 10px;
  width: 100%;
  color: #333;
  font-size: 18px;
}

.flex1 {
  flex-basis: auto;
}

.flex1:after {
  content: 'auto';
}

.flex2 {
  flex-basis: -webkit-max-content;
  flex-basis: -moz-max-content;
  flex-basis: max-content;
}

.flex2:after {
  content: 'max-content';
}

.flex3 {
  flex-basis: -webkit-min-content;
  flex-basis: -moz-min-content;
  flex-basis: min-content;
}

.flex3:after {
  content: 'min-content';
}

.flex4 {
  flex-basis: -webkit-fit-content;
  flex-basis: -moz-fit-content;
  flex-basis: fit-content;
}

.flex4:after {
  content: 'fit-content';
}

.flex5 {
   flex-basis: content;
}

.flex5:after {
  content: 'content';
}

.flex6 {
  flex-basis: -webkit-fill-available;
  flex-basis: -moz-available;
  flex-basis: fill;
}

.flex6:after {
  content: 'fill/-webkit-fill-available/-moz-available';
}

Resultados

Especificaciones

Especificación Estado Comentario
CSS Flexible Box Layout Module
The definition of 'flex-basis' in that specification.
Candidate Recommendation Definición Inicial

Compatibilidad de navegadores

Característica Firefox (Gecko) Chrome Internet Explorer Edge Opera Safari
Soporte Base 18.0 (18.0)[1]
22.0 (22.0)
21.0-webkit 11[2] 12 12.10 7.0-webkit[3]
auto 18.0 (18.0) 21.0 11 12 12.10 7.0-webkit
content No support[4] No support No support 12 No support No support
Característica Firefox Mobile (Gecko) Android IE Phone Opera Mobile Safari Mobile
Soporte Base ? ? No support 12.10 No support

[1] Para acivar el soporte de caja flexible en Firefox 18 y 19, el usuario debe cambiar en preferencias about:config  en "layout.css.flexbox.enabled" a true. Firefox soporta flexbox multi-línea desde Firefox 28.

[2] Cuando no se especifíca flex-basis como auto, Internet Explorer 10-11 (pero no 12+) siempre usa el box model mediante la propiedad content-box para calcular el tamaño de un elemento flexible, incluso si se aplica al elemento la propiedad box-sizing: border-box. Ver Flexbug #7 para más información.

[3] Ver Safari 7.0.

[4] Ver bug 1105111.

Ver también

Etiquetas y colaboradores del documento

 Colaboradores en esta página: joshitobuba, jandrade
 Última actualización por: joshitobuba,