Problema de CSS Flexbox: ¿Por qué el ancho de mis flexchildren se ve afectado por su contenido?


A los 2 hijos de mi flexbox se les da un estilo de box-flex: 1. Mi entendimiento es que sus anchuras deben ser iguales entre sí (ambos ocupando 50% del ancho total de su flexbox padre). Pero cuando se agrega contenido a los hijos, su ancho cambia (dependiendo de lo que es el contenido y el relleno)! ¿Por qué sucede esto?

CSS:

.hasFlex {
   display: box;
   display: -webkit-box;
   display: -moz-box;
   -webkit-box-align: start;
   -moz-box-align: start;
   box-align: start;}
.box0 {
   -webkit-box-flex: 0;
   -moz-box-flex: 0;
   box-flex: 0;}
.box1 {
  -webkit-box-flex: 1;
  -moz-box-flex: 1;
  box-flex: 1;}
.box2 {
   -webkit-box-flex: 2;
   -moz-box-flex: 2;
   box-flex: 2;}
.box3 {
   -webkit-box-flex: 3;
   -moz-box-flex: 3;
   box-flex: 3;}
.container {
margin-bottom: 10px;
}

HTML:

<div class="container hasFlex">
<div id="main" role="main" class="box1">
    <div class="innerBG">
      a bunch of stuff (divs, text, etc) go here
    </div>
</div>
<div id="sidebar" class="box1">
    <div class="innerBG">
       a bunch more stuff (divs, text, etc.) go here
    </div>
</div>
</div>
Author: T.Rob, 2011-11-02

1 answers

La solución para esto es agregar width: 0 a los elementos .box1.

Véase: http://jsfiddle.net/thirtydot/fPfvN /

Creo que lo descubrí por mí mismo aquí: http://oli.jp/2011/css3-flexbox /

El ancho preferido de un elemento secundario de box que contiene contenido de texto es actualmente el texto sin saltos de línea, lo que lleva a muy poco intuitivo cálculos de ancho y flex → declarar un ancho en un elemento secundario de box con más de unos pocos palabras (alguna vez se preguntó por qué flexbox demos son todos "1,2,3"?)

Tenga en cuenta que para su situación, parece mucho más fácil de usar display: table + table-layout: fixed: http://jsfiddle.net/thirtydot/fPfvN/1 / . Sin embargo, flexbox le permite cambiar rápidamente las cosas de una manera con la que display: table no puede competir.

 79
Author: thirtydot,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-05-23 14:22:54