Проблема с Flexbox в CSS: почему их содержимое влияет на ширину моих flexchildren? - PullRequest
52 голосов
/ 02 ноября 2011

Двое детей из моей flexbox имеют стиль box-flex: 1. Насколько я понимаю, их ширина должна быть равной друг другу (обе занимают 50% от общей ширины родительского флексбокса). Но когда контент добавляется к дочерним элементам, их ширина изменяется (в зависимости от содержания и отступов)! Почему это происходит?

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>

1 Ответ

82 голосов
/ 02 ноября 2011

Обходной путь для этого - добавить width: 0 к элементам .box1.

См .: http://jsfiddle.net/thirtydot/fPfvN/

Мне кажется, я сам это выяснил: http://oli.jp/2011/css3-flexbox/

Предпочтительной шириной дочернего элемента box, содержащего текстовое содержимое, является в настоящее время текст без разрывов строк, что приводит к очень неинтуитивным вычисления ширины и гибкости → объявляют ширину дочернего элемента блока с более чем несколькими словами (когда-нибудь задумывались, почему демонстрации flexbox все «1,2,3»?)

Обратите внимание, что в вашей ситуации это выглядит гораздо проще для использования display: table + table-layout: fixed: http://jsfiddle.net/thirtydot/fPfvN/1/. Хотя flexbox позволяет вам быстро менять вещи так, как display: table не может конкурировать с.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...