Почему родительский блок больше по высоте чем дочерний?
Здрасте. У меня есть некий блок в котором есть item. Почему при min-widht и min-height, а также при фиксированных размерах дочернего элемента родительский блок по высоте становиться больше.
<div class="container"> <ul class="block"> <li class="block-item"></li> </ul> </div> |
<div class="container"> <ul class="block"> <li class="block-item"></li> </ul> </div>
.container { width: 100%; min-height: 100vh; background-color: bisque; display: flex; justify-content: center; align-items: center; } .block { background-color: red; display: inline-block; } .block-item{ min-width: 200px; min-height: 300px; background-color: rgb(0, 174, 255); display: inline-block; } |
.container { width: 100%; min-height: 100vh; background-color: bisque; display: flex; justify-content: center; align-items: center; } .block { background-color: red; display: inline-block; } .block-item{ min-width: 200px; min-height: 300px; background-color: rgb(0, 174, 255); display: inline-block; }
Дополнительно:
https://ru.stackoverflow.com/questions/609992/Отст...
но скорее всего из-за какого-то там свойства, типа line-height и т.д, не советовал бы забивать этой фигнёй голову до профессионального уровня, просто знать что инлайн элементы имеют отступ - достаточно
а вспомнил, потому что у ul по умолчанию display block, или даже если переназначить на display: inline-block; направление не изменится, будет одно и тоже, поэтому отступ снизу появился, но всё равно я думал он должен быть между инлайновыми элементами, но похож каждый инлайновый элемент создаёт отступ
вот только непонятно почему он снизу
Почему не понятно? В строковом контексте между строками подразумевается наличие некоторого промежутка. Но присутствует он только при выравнивании по базовой линии (vertical-align: baseline), это значение по умолчанию. Стоит изменить на любое другое значение, и отступ пропадёт.
Для .container задан flex. Значит, задавать для .block inline-block - бесполезно, потому что будет всё равно блок (если мы не будем сейчас думать о "на всякий случай").
Но уже внутри .block есть дочерний элемент .block-item тоже имеющий inline-block.
А после них браузер делает "пробел". И то, что вы видите красное - это он и есть.
Как лучше чинить зависит от макета, вашей схемы недостаточно. Ну разве что банальные советы поменять на флекс или обычный блок или разобраться с vertical-align.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос

Проблема, когда родительский блок больше по высоте, чем дочерний, может возникать по нескольким причинам. Ниже приведены несколько возможных причин и способы их решения.
1. **Отсутствие контента в дочернем блоке**: Если дочерний блок не содержит достаточного контента, чтобы занимать всю высоту родительского блока, то родительский блок будет автоматически больше по высоте. Решение этой проблемы заключается в добавлении контента или установке минимальной высоты для дочернего блока.
2. **Использование свойства float**: Если вы использовали свойство `float` для дочернего блока, то это может привести к тому, что родительский блок не учитывает высоту дочернего блока. Чтобы решить эту проблему, можно использовать метод `clearfix`, добавив пустой элемент с `clear: both;` после дочернего блока.
3. **Использование позиционирования**: Если вы использовали абсолютное или фиксированное позиционирование для дочернего блока, то это также может привести к проблеме с высотой родительского блока. В этом случае, рекомендуется использовать относительное позиционирование или другие методы для корректного отображения блоков.
Пример кода для установки минимальной высоты дочернего блока:
.parent { background-color: #f0f0f0; padding: 20px; } .child { background-color: #ccc; min-height: 100px; }
Пример кода для использования `clearfix`:
.parent { overflow: hidden; } .child { float: left; } .clearfix::after { content: ""; display: table; clear: both; }
Надеюсь, что эти рекомендации помогут вам решить проблему с высотой блоков на вашем сайте. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать их.