Почему родительский блок больше по высоте чем дочерний?

Ссылка скопирована
5 мая 2026 1 ответ

Здрасте. У меня есть некий блок в котором есть 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/Отст...

  • вот только непонятно почему он снизу, обычно между инлайн элементами должен быть, но может быть потому что элемент всего лишь 1, хз

    но скорее всего из-за какого-то там свойства, типа line-height и т.д, не советовал бы забивать этой фигнёй голову до профессионального уровня, просто знать что инлайн элементы имеют отступ - достаточно

    а вспомнил, потому что у ul по умолчанию display block, или даже если переназначить на display: inline-block; направление не изменится, будет одно и тоже, поэтому отступ снизу появился, но всё равно я думал он должен быть между инлайновыми элементами, но похож каждый инлайновый элемент создаёт отступ

  • szQocks,

    вот только непонятно почему он снизу

    Почему не понятно? В строковом контексте между строками подразумевается наличие некоторого промежутка. Но присутствует он только при выравнивании по базовой линии (vertical-align: baseline), это значение по умолчанию. Стоит изменить на любое другое значение, и отступ пропадёт.

  • Сергей delphinpro, да, вы правы)
  • Для .container задан flex. Значит, задавать для .block inline-block - бесполезно, потому что будет всё равно блок (если мы не будем сейчас думать о "на всякий случай").
    Но уже внутри .block есть дочерний элемент .block-item тоже имеющий inline-block.
    А после них браузер делает "пробел". И то, что вы видите красное - это он и есть.

    Как лучше чинить зависит от макета, вашей схемы недостаточно. Ну разве что банальные советы поменять на флекс или обычный блок или разобраться с vertical-align.

    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Мария Код Ответ

    Проблема, когда родительский блок больше по высоте, чем дочерний, может возникать по нескольким причинам. Ниже приведены несколько возможных причин и способы их решения.

    1. **Отсутствие контента в дочернем блоке**: Если дочерний блок не содержит достаточного контента, чтобы занимать всю высоту родительского блока, то родительский блок будет автоматически больше по высоте. Решение этой проблемы заключается в добавлении контента или установке минимальной высоты для дочернего блока.

    2. **Использование свойства float**: Если вы использовали свойство `float` для дочернего блока, то это может привести к тому, что родительский блок не учитывает высоту дочернего блока. Чтобы решить эту проблему, можно использовать метод `clearfix`, добавив пустой элемент с `clear: both;` после дочернего блока.

    3. **Использование позиционирования**: Если вы использовали абсолютное или фиксированное позиционирование для дочернего блока, то это также может привести к проблеме с высотой родительского блока. В этом случае, рекомендуется использовать относительное позиционирование или другие методы для корректного отображения блоков.

    Пример кода для установки минимальной высоты дочернего блока:

    .parent {
      background-color: #f0f0f0;
      padding: 20px;
    }
     
    .child {
      background-color: #ccc;
      min-height: 100px;
    }

    .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;
    }

    .parent { overflow: hidden; } .child { float: left; } .clearfix::after { content: ""; display: table; clear: both; }

    Надеюсь, что эти рекомендации помогут вам решить проблему с высотой блоков на вашем сайте. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать их.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно