Исправляем перекрытие отступов у div в CSS: float и margin
Быстрый ответ
Чтобы одолеть проблему наложения отступов, следует взглянуть на такое явление, как слияние отступов. Эффективные решения представляют собой использование flexbox, добавление padding или применение границы:
Пример с применением flexbox:
<div style="display: flex; flex-direction: column;">
<div>Div 1 // Непоколебимый оловянный солдатик</div>
<div>Div 2 // Тропа за первопроходцем</div>
</div>
Вариант с добавлением padding:
<div style="padding: 1px 0;">
<div style="margin-bottom: 20px;">Div 1 // Лёгкость понедельниковой безысходности</div>
<div style="margin-top: 20px;">Div 2 // Непреклонность и упорство</div>
</div>
Возможный подход через добавление границы:
<div style="border: 1px solid transparent;">
<div>Div 1 // Интроверт на вечеринке</div>
<div>Div 2 // Оберегает личное пространство</div>
</div>
Таким образом, отступы держатся в узде. 🏋️♀️
Алхимия слияния отступов
Слияние отступов — сложное и порой волшебное явление в CSS, когда вертикальные отступы соседних элементов сливаются в один более просторный. Несмотря на пользу, это может ломать дизайн.
Трюк clearfix
clearfix — наша волшебная палочка, спаситель для элементов, ставших невидимыми из-за обтекания:
.clearfix::after {
content: "";
display: table;
clear: both;
// И вуаля! Ненужные отступы испарились
}
Как капля соуса в бургер:
<div class="clearfix">
<div style="float: left;">Div 1 // Левый фланг, свобода для индивида?</div>
<div style="float: left;">Div 2 // Следует за толпой</div>
</div>
Иммунитет Flexbox и Grid к слиянию отступов
Flexbox и Grid не подвержены проблеме слияния отступов — они поистине супергерои CSS-мира.
Пример с Grid, игнорирующим слияние отступов:
<div style="display: grid; grid-template-columns: 1fr;">
<div>Item 1 // Занял своё мячище</div>
<div>Item 2 // Занят своими делами</div>
</div>
Захват пространства
Сочетайте подходы, ориентируясь на гибкость. Всегда будьте в готовности:
Пространство между
Почему доверять только отступам? Padding и grid-gap — надёжные помощники в создании промежутков.
Внутренний подход
Недостатки внутренних отступов — неприятная вещь, но решаемы: – Padding обычно решает подобные проблемы. – Невидимая граница может стать незаметной защитой от слияния отступов.
BFC ко взывает вас
Блочный форматирующий контекст (BFC) — ваша магическая пуля для борьбы со слиянием. Создавайте новый BFC и спасайте макет с помощью overflow: hidden
или display: flow-root
в родительском div.
Визуализация
Обработка отступов — поединок сумоистов, забывших о личном пространстве:
До слияния отступов:
🤼♂️<--📏-->🤼♂️ (Каждому сумоисту 🤼♂️ достаётся уровень пространства 📏)
После слияния отступов:
🤼♂️🤼♂️ (Сумоисты тесно прижимаются друг к другу)
На помощь приходят display: inline-block
или граница:
🤼♂️<🎽>--📏--<🎽>🤼♂️
(Каждый сумоист 🤼♂️ теперь в рубашке 🎽)
Идеальные отступы! 🎉
Изучение отладки
Инспектируйте, тестируйте и проверяйте применённые решения. Ваши тузы в рукаве:
Плавное исполнение
Сценарии применения отступов бывают различными: вложенные блоки, соседние элементы с противоположными отступами, элементы с обтеканием. Будьте готовы ко всему!
Кнопка "Пусть мне повезет"
Иногда стоит довериться интуиции (и коду) и нажать кнопку "Пусть мне повезет" в инструментах разработчика.
Проверка кросс-браузерной поддержки
Браузеры трактуют CSS-правила по-разному. Всегда проверяйте ваше решение в различных браузерах; то, что работает в одном, может не сработать в другом.
Применение продвинутых техник
Продвинутые свойства CSS также способны оказать помощь:
display: flow-root;
создает BFCvisibility: collapse;
стильно скрывает строки и колонки таблицы
Полезные материалы
- Введение в основы CSS модели блочной коробки — прочный гид по основам вёрстки в web.
- Что нужно знать о слиянии отступов — понимание механики слияния отступов.
- CSS модель блока — базовый набор для погружения в основы CSS модели блока.
- Как отключить слияние отступов? — советы и трюки от сообщества разработчиков.
- Блочный форматирующий контекст — подробности о том, как работает блочный форматирующий контекст в CSS.