Intentando un navegador flexbox que tiene hasta 5 elementos y tan poco como 3, pero no divide el ancho por igual entre todos los elementos.
Violín
El tutorial que estoy modelando después es http://www.sitepoint.com/responsive-fluid-width-variable-item-navigation-css/
HABLAR CON DESCARO A
* {
font-size: 16px;
}
.tabs {
max-width: 1010px;
width: 100%;
height: 5rem;
border-bottom: solid 1px grey;
margin: 0 0 0 6.5rem;
display: table;
table-layout: fixed;
}
.tabs ul {
margin: 0;
display: flex;
flex-direction: row;
}
.tabs ul li {
flex-grow: 1;
list-style: none;
text-align: center;
font-size: 1.313rem;
background: blue;
color: white;
height: inherit;
left: auto;
vertical-align: top;
text-align: left;
padding: 20px 20px 20px 70px;
border-top-left-radius: 20px;
border: solid 1px blue;
cursor: pointer;
}
.tabs ul li.active {
background: white;
color: blue;
}
.tabs ul li:before {
content: "";
}
<div class="tabs">
<ul>
<li class="active" data-tab="1">Pizza</li>
<li data-tab="2">Chicken Noodle Soup</li>
<li data-tab="3">Peanut Butter</li>
<li data-tab="4">Fish</li>
</ul>
</div>
Respuestas:
Hay una parte importante que no se menciona en el artículo al que se vinculó y que es
flex-basis
. Por defectoflex-basis
esauto
.De la especificación :
Cada elemento flexible tiene un
flex-basis
tipo similar a su tamaño inicial. Luego, a partir de ahí, cualquier espacio libre restante se distribuye proporcionalmente (segúnflex-grow
) entre los elementos. Conauto
, esa base es el tamaño del contenido (o el tamaño definido conwidth
, etc.). Como resultado, a los elementos con texto más grande se les da más espacio en general en su ejemplo.Si desea que sus elementos sean completamente uniformes, puede configurarlos
flex-basis: 0
. Esto establecerá la base flexible en 0 y luego cualquier espacio restante (que será todo el espacio ya que todas las bases son 0) se distribuirá proporcionalmente en función deflex-grow
.Este diagrama de la especificación hace un buen trabajo al ilustrar el punto.
Y aquí hay un ejemplo de trabajo con su violín.
fuente
flex: 1;
es la abreviatura de combinación deflex-grow: 1
,flex-basis: 0
.Para crear elementos con el mismo ancho de uso
Flex
, debe establecer el elemento secundario de su hijo (elementos flexibles):Dará a todos los elementos de la fila 25% de ancho. No crecerán e irán uno por uno.
fuente