Без отступов / высота
Возьмите следующий пример:
console.log(`Header height: ${header.clientHeight}px`);
#header {
background-color: red;
}
<div id="header"></div>
Я установил для элемента #header
значение background-color: red
, но красного цвета вы не видите, верно?Поскольку высота элемента по умолчанию равна 0px
, поэтому элемент практически не виден .
С отступом / высотой
Теперь рассмотрим этот пример с отступом:
console.log(`Header height: ${header.clientHeight}px`);
#header {
background-color: red;
padding: 5em;
}
<div id="header"></div>
Обратите внимание, что высота сейчас 160px
, и вы можете увидеть большую кучу красного.
Чтобы ответить на ваш вопрос
Может кто-нибудь объяснить это поведение, и почему (кажется, что) настройка отступа необходима для того, чтобы изображение даже появлялось?
Заполнение не требуется.Но высота элемента равна.
Чтобы задать высоту для элемента, вы можете:
- Установить
height
- Установить
padding-top
и /или padding-bottom
- Передать HTML-контент (с высотой) элементу (т. е. текстам
img
s)
Если это по какой-либо причине абсолютно необходимо,всегда ли мне нужно устанавливать какое-либо произвольное значение, например 5em (которое я нашел экспериментально, а не какую-либо логику)?
Нет.Читайте выше.
Может быть, есть разумное решение для обходного пути, которое я должен использовать вместо этого?
Нет.Читайте выше.
PS
По умолчанию элементы со значением по умолчанию display: block
будут иметь значение по умолчанию width: 100%
, но без значения высоты по умолчанию.Вот почему вы можете видеть ширину границы 100% по ширине, но 0px
по высоте.