БЫТЬ ОСТОРОЖЕН
В некоторых браузерах:
flex:1;
не равноflex:1 1 0;
flex:1;
= flex:1 1 0n;
(где n - единица длины).
- flex-grow: число, определяющее, насколько элемент будет расти относительно остальных гибких элементов.
- flex-shrink Число, указывающее, насколько элемент будет сжиматься относительно остальных гибких элементов.
- flex-base Длина предмета. Допустимые значения: «авто», «наследование» или число, за которым следует «%», «px», «em» или любая другая единица длины.
Ключевым моментом здесь является то, что для гибкой основы требуется единица длины .
В Chrome к примеру flex:1
и flex:1 1 0
дают разные результаты. В большинстве случаев может показаться, что flex:1 1 0;
это работает, но давайте посмотрим, что происходит на самом деле:
ПРИМЕР
Основа Flex игнорируется и применяются только flex-grow и flex-shrink.
flex:1 1 0;
= flex:1 1;
=flex:1;
На первый взгляд это может показаться нормальным, если примененный модуль контейнера вложен; ожидать неожидаемое!
Попробуйте этот пример в ХРОМЕ
.Wrap{
padding:10px;
background: #333;
}
.Flex110x, .Flex1, .Flex110, .Wrap {
display: -webkit-flex;
display: flex;
-webkit-flex-direction: column;
flex-direction: column;
}
.Flex110 {
-webkit-flex: 1 1 0;
flex: 1 1 0;
}
.Flex1 {
-webkit-flex: 1;
flex: 1;
}
.Flex110x{
-webkit-flex: 1 1 0%;
flex: 1 1 0%;
}
FLEX 1 1 0
<div class="Wrap">
<div class="Flex110">
<input type="submit" name="test1" value="TEST 1">
</div>
</div>
FLEX 1
<div class="Wrap">
<div class="Flex1">
<input type="submit" name="test2" value="TEST 2">
</div>
</div>
FLEX 1 1 0%
<div class="Wrap">
<div class="Flex110x">
<input type="submit" name="test3" value="TEST 3">
</div>
</div>
СОВМЕСТИМОСТЬ
Следует отметить, что это не удается, потому что некоторые браузеры не соответствуют спецификации .
Браузеры, использующие полную спецификацию гибкости:
- Firefox - ✓
- Эдж - ✓ (Знаю, я тоже был в шоке.)
- Хром - x
- Смелый - х
- Опера - х
- IE - (смеется, он работает без единицы длины, но не с ней.)
ОБНОВЛЕНИЕ 2019
Последние версии Chrome, похоже, наконец-то устранили эту проблему, но другие браузеры до сих пор этого не сделали.
Протестировано и работает в Chrome версии 74.