html.okpython.net
Основы создания сайтов
CSS :: Свойство flex-basis
css-свойство flex-basis (от англ. flex basis – основа флекс-элемента) задает базовый (начальный) размер флекс-элемента. Если свойство используется, то его значение для определения базового размера будет иметь приоритет над значениями свойств width или height (в зависимости от того, какое из них будет иметь отношение к базовому размеру в текущей ситуации).
Характеристики
- Значение по умолчанию: auto.
- Применяется: к флекс-элементам.
- Наследуется: нет.
- Анимируется: да.
- JavaScript: object.style.flexBasis="value".
Синтаксис
flex-basis: auto | <размер>
Значения
В качестве значений свойство flex-basis может принимать:
- auto – базовый размер флекс-элемента устанавливается автоматически в зависимости от размера его содержимого (используется по умолчанию);
- размер – разрешается использовать любые доступные в CSS единицы измерения длины, а также проценты, которые рассчитываются относительно размера флекс-контейнера.
Ссылки
Официальный сайт W3C: https://drafts.csswg.org/css-flexbox-1/#propdef-flex-basis
Статья на Mozilla Firefox: https://developer.mozilla.org/ru/docs/Web/CSS/flex-basis
Подробнее о модуле Flexbox смотрите в нашем учебнике здесь.
Примеры
HTML
Результат
htmlCodes
htmlCodes
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Пример №1</title>
<style>
/* Оформляем родительские div'ы flex-элементов */
div{
display: flex;
width: 500px;
height: 100px;
margin: auto;
margin-top: 20px;
background-color: #DFDFDF;
border-radius: 5px;
}
/* Это общий стиль flex-элементов */
p, span{
flex-basis: 70px;
width: 200px;
min-width: 50px;
height: 20px;
padding: 10px;
margin: auto;
background-color: #55aa55;
border-radius: 5px;
text-align: center;
font-weight: bold;
color: #F9F9F9;
}
.flex_column{
flex-direction: column;
height: 380px;
}
.p_normal{
display: block;
width: 480px;
height: auto;
text-align: left;
margin-top: 2em;
}
</style>
</head>
<body>
<div>
<p>1</p><span>2</span><p>3</p>
</div>
<div>
<p style="flex-basis: 50px;">1</p>
<span style="flex-basis: 100px;">2</span>
<p style="flex-basis: 200px;">3</p>
</div>
<div class="flex_column">
<p>1</p><span>2</span>
<p style="flex-basis: 40px;">3</p>
</div>
<p class="p_normal">
В первом флекс-контейнере примера мы базовый размер для
отдельных флекс-элементов не изменяли, поэтому все элементы
визуально отображаются с шириной 70px (направление главной
оси у нас горизонтальное, поэтому базовый размер переопределяет
ширину). Высота же у всех элементов осталась такой, какой мы
определили ее в таблицах стилей, т.е. 20px.
</p>
<p class="p_normal">
Во втором флекс-контейнере мы каждому флекс-элементу задали свой
базовый размер. Высота при этом у всех также осталась равна 20px.
</p>
<p class="p_normal">
В третьем флекс-контейнере мы изменили направление главной оси на
вертикальное и переопределили его высоту, установив новое значение
в 380px (чтобы было хорошо видно колонку). Так как теперь
направление главной оси вертикальное, базовый размер играет роль
высоты. Поэтому мы и видим, что высота первых двух флекс-элементов
увеличилась и стала равна базовому размеру, т.е. 70px. А вот ширина
всех флекс-элементов стала равна 200px, как и было определено в
таблице стилей (ведь в данном блоке базовый размер переопределяет
уже высоту). Для третьего элемента мы для примера переопределили его
базовый размер, поэтому его высота стала равна 40px, но ширина
осталась равна 200px.
</p>
</body>
</html>
Пример №1