Spec-Zone.ru › CSS

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API