float
Свойство float CSS помещает элемент слева или справа от его контейнера, позволяя тексту и инлайновым элементам обтекать его. Элемент удаляется из обычного потока страницы, но всё ещё остаётся частью потока (в отличие от абсолютного позиционирования).
Попробуйте
Элемент с плавающим расположением — это элемент, у которого вычисленное значение 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;
Свойство float задаётся одним ключевым словом из списка значений ниже.
Значения
left-
Элемент должен быть слева от содержащего блока.
right-
Элемент должен быть справа от содержащего блока.
none-
Элемент не должен плавать.
inline-start-
Элемент должен плавать со стороны начала содержащего блока. Это левая сторона с
ltrскриптами, и правая сторона сrtlскриптами. inline-end-
Элемент должен плавать со стороны конца содержащего блока. Это правая сторона с
ltrскриптами, и левая сторона сrtlскриптами.
Формальное определение
| Начальное значение | none |
|---|---|
| Применимо к | всем элементам, но не имеет эффекта, если значение display равно none. |
| Наследуется | нет |
| Вычисленное значение | как указано |
| Тип анимации | дискретный |
Формальный синтаксис
float =
block-start |
block-end |
inline-start |
inline-end |
snap-block |
<snap-block()> |
snap-inline |
<snap-inline()> |
left |
right |
top |
bottom |
none |
footnote
<snap-block()> =
snap-block( <length> , [ start | end | near ]? )
<snap-inline()> =
snap-inline( <length> , [ left | right | near ]? )
Примеры
Как позиционируются элементы с плавающим расположением
Как упоминалось выше, при плавающем расположении элемента он выводится из обычного потока документа (хотя и остаётся его частью). Он сдвигается влево или вправо, пока не коснется края своего содержащего блока или другого плавающего элемента.
На этом примере изображены три цветных квадрата. Два из них плавают слева, а один — справа. Обратите внимание, что второй слева квадрат размещается справа от первого. Дополнительные квадраты будут продолжать накладываться справа, пока не заполнят весь содержащий блок, после чего перейдут на следующую строку.
Элемент с плавающим расположением имеет высоту не меньше, чем высота самого высокого вложенного плавающего дочернего элемента. Мы задали родительскому элементу 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 для примеров.
Спецификации
| Спецификация |
|---|
| Cascading Style Sheets Level 2 Revision 2 (CSS 2.2) Specification # propdef-float |
| CSS Logical Properties and Values Level 1 # float-clear |
Совместимость с браузерами
| Рабочий стол | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari на IOS | Samsung Internet | WebView Android | |
float |
1 | 12 | 1 | 7 | 1 | 18 | 4 | 10.1 | 1 | 1.0 | 4.4 |
inline-end |
118 | 118 | 55 | 104 | 15 | 118 | 55 | 79 | 15 | 25.0 | 118 |
inline-start |
118 | 118 | 55 | 104 | 15 | 118 | 55 | 79 | 15 | 25.0 | 118 |
left |
1 | 12 | 1 | 15 | 1 | 18 | 4 | 14 | 1 | 1.0 | 4.4 |
none |
1 | 12 | 1 | 15 | 1 | 18 | 4 | 14 | 1 | 1.0 | 4.4 |
right |
1 | 12 | 1 | 15 | 1 | 18 | 4 | 14 | 1 | 1.0 | 4.4 |
См. также
- Блочный контекст форматирования
- Используйте
clearдля того, чтобы заставить элемент перемещаться ниже плавающего элемента.
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/float