Подтвердить что ты не робот

Что значит flex: 1?

Мы все знаем, что свойство flex является сокращением для свойств flex-grow, flex-shrink и flex-basis based. И его значение по умолчанию 0 1 auto. Это значит:

flex-grow: 0;
flex-shrink: 1;
flex-basis: auto;

но я заметил, во многих местах flex: 1 используется. Это сокращение для 1 1 auto или 1 0 auto? Я не могу понять, что это значит? Я ничего не ищу в поиске.

4b9b3361

Ответ 1

Вот объяснение:

https://www.w3.org/TR/css-flexbox-1/#flex-common

flex: < положительное число >
    Эквивалент гибкости: < позитивный номер > 1 0. Делает гибкий элемент гибким и устанавливает гибкость основы на ноль, в результате чего элемент, который получает определенную долю свободного места в гибком контейнер. Если все элементы в контейнере flex используют этот шаблон, их размеры будут пропорциональны указанному коэффициенту гибкости.

Следовательно, flex:1 эквивалентно flex: 1 1 0

Ответ 2

flex: 1 означает следующее:

flex-grow : 1;    ➜ The div will grow in same proportion as the window-size       
flex-shrink : 1;  ➜ The div will shrink in same proportion as the window-size 
flex-basis : 0;   ➜ The div does not have a starting value as such and will 
                     take up screen as per the screen size available for
                     e.g:- if 3 divs are in the wrapper then each div will take 33%.

Ответ 3

БУДЬТЕ ОСТОРОЖНЫ

В некоторых браузерах:

flex:1; не равно flex:1 1 0;

flex:1; = flex:1 1 0n; (где n - единица длины).

  • flex-grow: Число, указывающее, насколько элемент будет расти относительно остальных гибких элементов.
  • flex-shrink Число, указывающее, насколько элемент будет сжиматься относительно остальных гибких элементов
  • flex-base Длина элемента. Допустимые значения: "авто", "наследовать" или число, за которым следуют "%", "px", "em" или любая другая единица длины.

Ключевым моментом здесь является то, что flex-based требуется единица длины.

Например, в Chrome flex:1 и flex:1 1 0 дают разные результаты. В большинстве случаев может показаться, что flex:1 1 0; работает, но давайте рассмотрим, что на самом деле происходит:

Пример

Гибкая основа игнорируется, применяются только flex-grow и flex-shrink.

flex:1 1 0; = flex:1 1; = flex:1;

Однако на первый взгляд это может показаться нормальным, если применяемая единица контейнера является вложенной; ожидать неожидаемое!

Попробуйте этот пример в CHROME

.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>

Ответ 4

Свойство flex CSS указывает, как элемент гибкости будет расти или уменьшаться, чтобы соответствовать пространству, доступному в его контейнере гибких дисков. Это сокращенное свойство, которое устанавливает гибкость, гибкость и гибкость.

/* Basic values */
flex: auto;
flex: initial;
flex: none;
flex : 2;

/* Два значения: flex-grow | flex-shrink */

flex: 1 1;

/* Три значения: flex-grow | гибкая термоусадочная пленка | flex-basis */

flex: 1 1 10%;

авто

Элемент имеет размер в зависимости от его свойств ширины и высоты, но растет, чтобы поглотить любое дополнительное свободное пространство в контейнере гибкого диска и сжимается до минимального размера, чтобы он соответствовал контейнеру. Это эквивалентно установке "flex: 1 1 auto".

начальная

Это значение по умолчанию. Элемент имеет размер в зависимости от его свойств ширины и высоты. Он сжимается до минимального размера, чтобы соответствовать контейнеру, но не растет, чтобы поглотить лишнее свободное пространство в гибком контейнере. Это эквивалентно установке "flex: 0 1 auto".

ни один

Элемент имеет размер в зависимости от его свойств ширины и высоты. Он полностью негибкий: он не сжимается и не растет по сравнению с гибким контейнером. Это эквивалентно установке "flex: 0 0 auto".

Ответ 5

Для меня самым простым ответом, который имел больше смысла, были сами документы React Native FlexBox. Я видел, как мой коллега делал это <View style={{ flex: 1/4}}> Я запутался, я прочитал об этом по этой ссылке. http://facebook.github.io/react-native/docs/flexbox.html Надеюсь, это кому-нибудь поможет.