Float и Clear в CSS
Z-index укладывал перекрывающиеся слои. float и clear решают другую классическую задачу: дать тексту прижаться к боку картинки или врезки и решить, когда следующий блок должен упасть под эти float. Освойте паттерн обтекания — сетки страницы оставьте Flexbox и Grid.
Набор инструментов float и clear
📊 Float и clear одним взглядом
| Инструмент | Повседневная роль |
|---|---|
float: left |
Тянет блок влево; следующий контент может обтекать справа |
float: right |
Тянет блок вправо; следующий контент может обтекать слева |
float: none |
По умолчанию — без поведения float |
clear: left |
Следующий блок отказывается садиться рядом с левыми float |
clear: right |
Следующий блок отказывается садиться рядом с правыми float |
clear: both |
Следующий блок падает под float с любой стороны |
| Clearfix | Родитель растёт, чтобы вместить плавающих детей (напр. overflow или display: flow-root) |
Плавающие блоки особым образом выходят из обычного потока: соседи могут обтекать сбоку, а родитель может схлопнуться до нулевой высоты, если содержит только float. Именно из‑за этого схлопывания нужен clearfix.
Сделайте float картинки — история обтекает
Потяните фигуру влево и дайте абзацам течь рядом. Задайте изображению ширину, чтобы обтекание выглядело нарочно, а не случайно.
.article img.pull-left {
float: left;
width: 40%;
max-width: 220px;
margin: 0 1rem 0.75rem 0;
}
Врезка — float в другую сторону
Короткий совет или цитата может сесть справа, пока основной текст обтекает слева. Держите отступы, чтобы текст не «целовал» блок.
.tip {
float: right;
width: 38%;
margin: 0 0 1rem 1rem;
padding: 0.75rem 1rem;
background: #f5f7ff;
border-left: 3px solid #0b5fff;
}
clear — перестать обнимать float
Когда заголовок, подвал или следующий раздел должны начаться с новой строки под float, используйте clear. clear: both — повседневное «упади под всё плавающее».
.article-footer {
clear: both;
padding-top: 1rem;
border-top: 1px solid #eee;
}
Схлопнувшимся родителям нужен clearfix
Если родитель только оборачивает плавающих детей, высота может схлопнуться, а фоны/рамки выглядят сломанными. Спокойное решение: overflow: auto (или hidden) на родителе — или современный display: flow-root.
.media-row {
overflow: auto;
padding: 1rem;
border: 1px solid #e5e5e5;
}
.media-row img {
float: left;
margin-right: 1rem;
}
flow-root — ясный containing block
display: flow-root создаёт новый block formatting context, чтобы родитель содержал свои float без побочных эффектов overflow.
.card-with-float {
display: flow-root;
padding: 1rem;
background: #fff;
border: 1px solid #ddd;
}
Спокойная привычка с float
Используйте float для текста вокруг медиа и мелких приёмов обтекания. Предпочитайте Flexbox или Grid для навигации, колонок страницы и сеток карточек. Помните: position размещает; z-index наслаивает; float обтекает.
.feature {
display: flow-root;
}
.feature__media {
float: left;
width: 42%;
margin: 0 1rem 0.5rem 0;
}
.feature__copy {
/* wraps beside the media, then clears naturally as needed */
}
Попробуйте сами
- Сделайте float картинки влево в статье с абзацами и подстройте отступы.
- Сделайте float подсказки вправо и обтекайте основной текст рядом.
- Добавьте
clear: bothподвалу, который поднимался рядом с float. - Почините схлопнувшегося родителя через
overflow: autoилиdisplay: flow-root. - Напишите одно предложение: когда выберете Flex вместо float?
Частые ошибки
- Собирать целые макеты страницы на float вместо Flex/Grid
- Забывать
clear, и подвалы ползут рядом с картинками - Игнорировать схлопнувшихся родителей вокруг плавающих детей
- Относиться к float как к
positionилиz-index - Ставить
clearтолько на плавающий блок, когда имелся в виду следующий
Итог
floatотводит блок в сторону, чтобы следующий контент мог обтекатьclearзаставляет последующие блоки падать под float- Родители «только float» могут схлопываться — clearfix через overflow или
flow-root - Оставьте float для обтекания; Flex/Grid — для структуры страницы
- Размещение и наслоение остаются своими инструментами (
position,z-index)
🧠 Проверьте Свои Знания
Проверьте Свои Знания
Бросьте себе вызов с помощью этой интерактивной викторины и узнайте, насколько хорошо вы понимаете тему
📝 Инструкции
- Внимательно прочитайте каждый вопрос
- Выберите лучший ответ на каждый вопрос
- Вы можете пересдавать тест столько раз, сколько захотите
- Ваш прогресс будет показан вверху