Разница между шириной и гибкостью
Я столкнулся с различием в поведении между width
и flex-basis
, которое я не могу объяснить Каковы различия между flex-основой и шириной?.
.outer {
display: flex;
background: yellow;
padding: 10px;
}
.middle {
display: flex;
flex-shrink: 0;
background: red;
padding: 10px;
}
.inner {
flex-basis: 258px;
flex-shrink: 0;
display: flex;
flex-grow: 0;
background: green;
}
.inner2 {
width: 258px;
flex-shrink: 0;
display: flex;
flex-grow: 0;
background: green;
}
<div class="outer">
<div class="middle">
<div class="inner">
hello
</div>
</div>
</div>
<div class="outer">
<div class="middle">
<div class="inner2">
hello
</div>
</div>
</div>
Ответы
Ответ 1
Кажется, это ошибка.
Элемент, который является как гибким контейнером, так и гибким элементом, по-видимому, игнорирует внутренние размеры его дочерних элементов, если они установлены через flex-basis
, вместо этого вместо этого вместо этого следует измерять ширину/высоту содержимого своих детей. Ирония заключается в том, что IE11/Edge является единственным браузером, который реализует это правильно.
Отслеживание ошибок Chromium
Ответ 2
Это связано с тем, что IE11 поддерживает гибкость по-разному (только частично технически поддерживается). IE 11 требует, чтобы единица была добавлена к третьему аргументу, свойство flex-basis см. В документации msdn в источнике ниже.
Значения flex shorthand без единичных значений flex-основы игнорируются.
flex-basis - минимальная ширина, контейнер может иметь, то она будет расти/сокращаться на основе ваших других правил. Ширину не нужно использовать одновременно с гибкостью и гибкостью, поскольку они противоречат совместимости с X-браузером.
Я также обновил кодировку, чтобы помочь объяснить. См. Здесь: http://codepen.io/mattpark22/pen/wWqKpz
Теперь вы можете видеть, как разные браузеры обрабатывают flex:
flex-basis: 258px;
width: 258px;
Я также удалил
display: flex;
из .outer - это также имело эффект.
Источник: http://caniuse.com/#search=flex-basis
Источник: https://github.com/philipwalton/flexbugs#4-flex-shorthand-declarations-with-unitless-flex-basis-values-are-ignored
Источник: https://msdn.microsoft.com/en-us/library/dn254946%28v=vs.85%29.aspx