Свойство CSS `float`
Базовая поддержка Широко доступно
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и во многих версиях браузеров. Она доступна во всех браузерах с июля 2015 года.
Свойство float CSS размещает элемент у левого или правого края контейнера, позволяя тексту и строчным элементам обтекать его. Элемент исключается из нормального потока страницы, но при этом остаётся частью потока (в отличие от абсолютного позиционирования).
Попробуйте
float: none;
float: left;
float: right;
float: inline-start;
float: inline-end;
<section class="default-example" id="default-example">
<div class="example-container">
<div class="transition-all" id="example-element">Float me</div>
As much mud in the streets as if the waters had but newly retired from the
face of the earth, and it would not be wonderful to meet a Megalosaurus,
forty feet long or so, waddling like an elephantine lizard up Holborn Hill.
</div>
</section>
.example-container {
border: 1px solid #c5c5c5;
padding: 0.75em;
text-align: left;
width: 80%;
line-height: normal;
}
#example-element {
border: solid 10px #efac09;
background-color: #040d46;
color: white;
padding: 1em;
width: 40%;
}
Плавающий элемент — это элемент, вычисленное значение свойства которого float не равно none.
Поскольку float подразумевает использование блочной компоновки, оно в некоторых случаях изменяет вычисленные значения свойства display:
| Заданное значение | Вычисленное значение |
|---|---|
inline | block |
inline-block | block |
inline-table | table |
table-row | block |
table-row-group | block |
table-column | block |
table-column-group | block |
table-cell | block |
table-caption | block |
table-header-group | block |
table-footer-group | block |
inline-flex | flex |
inline-grid | grid |
| другое | без изменений |
Примечание: При обращении к свойству CSS в JavaScript через объект HTMLElement.style имена свойств из одного слова используются без изменений. Хотя float — зарезервированное слово в JavaScript, к свойству CSS float в современных браузерах обращаются как к float. В старых браузерах для доступа к свойству float необходимо использовать cssFloat. (Это похоже на то, как к атрибуту "class" обращаются как к "className", а к атрибуту "for" элемента <label> — как к "htmlFor".)
Синтаксис
/* Keyword values */ float: left; float: right; float: none; float: inline-start; float: inline-end; /* Global values */ float: inherit; float: initial; float: revert; float: revert-layer; float: unset;
Значения
Это свойство задаётся одним из следующих ключевых слов:
-
left - Элемент должен располагаться у левого края содержащего блока.
-
right - Элемент должен располагаться у правого края содержащего блока.
-
none - Элемент не должен обтекаться.
-
inline-start - Элемент должен располагаться у начального края содержащего блока. Это левый край для
ltrписьменностей и правый край дляrtlписьменностей. -
inline-end - Элемент должен располагаться у конечного края содержащего блока. Это правый край для
ltrписьменностей и левый край дляrtlписьменностей.
Формальное определение
| Исходное значение | none |
|---|---|
| Применяется к | ко всем элементам, но не оказывает эффекта, если значение display равно <code>none</code>. |
| Наследуется | нет |
| Вычисленное значение | как задано |
| Тип анимации | дискретный |
Формальный синтаксис
float =
left |
right |
none |
inline-start |
inline-end
Примеры
Как позиционируются плавающие элементы
Как упоминалось выше, плавающий элемент исключается из нормального потока документа (но при этом остаётся его частью). Он сдвигается влево или вправо, пока не коснётся края содержащего блока или другого плавающего элемента.
В этом примере показаны три цветных квадрата. Два расположены слева, один — справа. Обратите внимание, что второй квадрат, расположенный слева, находится справа от первого. Дополнительные квадраты будут располагаться один за другим справа, пока не заполнят содержащий блок, после чего перейдут на следующую строку.
Высота плавающего элемента не меньше высоты самого высокого из его вложенных плавающих дочерних элементов. Мы задали родительскому элементу width: 100% и расположили его слева, чтобы он был достаточно высоким для размещения плавающих дочерних элементов и занимал всю ширину родителя, благодаря чему нам не придётся очищать его соседний элемент.
HTML
<section>
<div class="left">1</div>
<div class="left">2</div>
<div class="right">3</div>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi tristique
sapien ac erat tincidunt, sit amet dignissim lectus vulputate. Donec id
iaculis velit. Aliquam vel malesuada erat. Praesent non magna ac massa
aliquet tincidunt vel in massa. Phasellus feugiat est vel leo finibus
congue.
</p>
</section>
CSS
section {
box-sizing: border-box;
border: 1px solid blue;
width: 100%;
float: left;
}
div {
margin: 5px;
width: 50px;
height: 150px;
}
.left {
float: left;
background: pink;
}
.right {
float: right;
background: cyan;
}
Результат
Очистка обтекания
Иногда может понадобиться принудительно переместить элемент ниже всех плавающих элементов. Например, абзацы могут располагаться рядом с плавающими элементами, а заголовки — обязательно начинаться с новой строки. Примеры см. в разделе clear.
Спецификации
| Спецификация |
|---|
| Каскадные таблицы стилей, уровень 2 # propdef-float |
| Модуль логических свойств и значений CSS, уровень 1 # float-clear |
Совместимость с браузерами
| Компьютеры | Мобильные устройства | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome для Android | Firefox для Android | Opera для Android | Safari на iOS | Samsung Internet | WebView для Android | WebView на iOS | |
float |
1 |
12 |
1 |
7 |
1 |
18 |
4 |
10.1 |
1 |
1.0 |
4.4 |
1 |
inline-end |
118 |
118 |
55 |
104 |
15 |
118 |
55 |
79 |
15 |
25.0 |
118 |
15 |
inline-start |
118 |
118 |
55 |
104 |
15 |
118 |
55 |
79 |
15 |
25.0 |
118 |
15 |
left |
1 |
12 |
1 |
15 |
1 |
18 |
4 |
14 |
1 |
1.0 |
4.4 |
1 |
none |
1 |
12 |
1 |
15 |
1 |
18 |
4 |
14 |
1 |
1.0 |
4.4 |
1 |
right |
1 |
12 |
1 |
15 |
1 |
18 |
4 |
14 |
1 |
1.0 |
4.4 |
1 |
См. также
- Контекст блочного форматирования
- Используйте
clear, чтобы принудительно переместить элемент ниже плавающего элемента.
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Properties/float