Энциклопедия CSS: height
Свойство height в CSS используется для задания высоты элемента. Как и width, это фундаментальное свойство, определяющее вертикальное пространство, занимаемое элементом на странице. Правильное использование height необходимо для контроля макета, обеспечения читаемости и создания визуально приятных веб-страниц.
Свойство height указывает высоту области контента элемента. Область контента - это пространство внутри элемента, где отображается текст, изображения и другое содержимое. Влияние height на общую высоту элемента зависит от значения свойства box-sizing. По умолчанию, box-sizing имеет значение content-box, что означает, что height определяет только высоту области контента, а padding и border добавляются к этой высоте.
Синтаксис
/* Keyword values */
height: auto;
height: max-content;
height: min-content;
height: fit-content(300px);
/* <length> values */
height: 300px;
height: 2em;
height: 5vh;
/* <percentage> values */
height: 50%;
/* Global values */
height: inherit;
height: initial;
height: unset;
Значения
auto
Это значение по умолчанию. Браузер вычисляет высоту элемента. Обычно, если у элемента блочное отображение и у него нет абсолютно позиционированных дочерних элементов, его высота равна высоте его содержимого. Для абсолютно позиционированных элементов высота обычно вычисляется на основе доступного вертикального пространства.
<length>
Указывает высоту в фиксированной единице измерения. Например:
px(пиксели)em(относительно размера шрифта элемента)rem(относительно размера шрифта корневого элемента)pt(пункты)cm(сантиметры)mm(миллиметры)in(дюймы)
<percentage>
Указывает высоту в процентах от высоты родительского элемента. Если родительский элемент не имеет явно заданной высоты, процентное значение не будет работать (высота будет auto). Обычно, чтобы процентные высоты работали, у родительских элементов должна быть явно заданная высота (например, в пикселях или через другое процентное значение, в конечном итоге привязанное к корневому элементу).
min-content
Элемент занимает столько места, сколько необходимо для отображения его самого маленького непрерывного содержимого по вертикали. Это полезно в сложных макетах, где нужно, чтобы высота столбцов или строк соответствовала минимально необходимому размеру содержимого.
max-content
Элемент занимает столько места, сколько необходимо для отображения всего содержимого без переносов или обрезания по вертикали. Это может привести к тому, что элемент будет выше, чем его родительский контейнер.
fit-content(<length-percentage>)
Ограничивает высоту элемента максимальным значением, указанным в <length-percentage>. Если содержимое элемента меньше этого значения, элемент займет только необходимое пространство. Если содержимое элемента больше этого значения, элемент будет соответствовать указанному значению, а содержимое может переполниться.
Область применения
Свойство height применяется к блочным (block) и строчно-блочным (inline-block) элементам. На строчные элементы (inline) height не оказывает влияния. Для применения height к строчному элементу, необходимо изменить его тип отображения на block или inline-block с помощью свойства display. Также, важно учитывать, что на абсолютно позиционированные элементы (position: absolute) высота может влиять по-другому, завися от контекста.
Как height взаимодействует с другими свойствами
padding
Padding добавляется к высоте области контента. По умолчанию (box-sizing: content-box), общая высота элемента вычисляется как: height + padding-top + padding-bottom + border-top + border-bottom + margin-top + margin-bottom.
border
Border также добавляется к высоте области контента. По умолчанию (box-sizing: content-box), общая высота элемента вычисляется как: height + padding-top + padding-bottom + border-top + border-bottom + margin-top + margin-bottom.
margin
Margin добавляется вне borders. Он не влияет на высоту элемента, а влияет на его позиционирование относительно соседних элементов.
box-sizing
Свойство box-sizing определяет, как вычисляется общая ширина и высота элемента.
- content-box (по умолчанию): width и height определяют только ширину и высоту области контента. padding и border добавляются к этим значениям для получения общей ширины и высоты.
- border-box: width и height определяют общую ширину и высоту элемента, включая padding и border. Область контента сжимается, чтобы вместить padding и border.
Как и в случае с шириной, использование box-sizing: border-box часто упрощает верстку, делая расчеты более предсказуемыми.
Примеры использования
Фиксированная высота
Задание фиксированной высоты элементу:
<div style="height: 200px; border: 1px solid black;">
Этот div имеет высоту 200 пикселей.</div>
Относительная высота
Задание относительной высоты элементу (50% от высоты родительского контейнера):
<div style="height: 50%; border: 1px solid black;">
Этот div занимает 50% высоты родителя. Родитель должен иметь заданную высоту для корректной работы.</div>
min-height и max-height
Ограничение высоты элемента минимальным и максимальным значениями:
<div style="min-height: 100px; max-height: 300px; border: 1px solid black;">
Этот div будет иметь высоту от 100 до 300 пикселей, в зависимости от содержимого и доступного пространства.</div>
Использование height: 100vh;
Задание элементу высоты, равной высоте видимой области экрана (viewport):
<div style="height: 100vh; border: 1px solid black;">
Этот div займет всю видимую высоту экрана.</div>
Применение кода
- Используйте
box-sizing: border-box;: Значительно упрощает расчет общей высоты элементов, особенно при работе сpaddingиborder. - Относительные единицы измерения (
%,em,rem,vh): Предпочтительны для создания адаптивных макетов.vh(viewport height) особенно полезен для создания полноэкранных элементов. - Проверяйте высоту родительского элемента при использовании процентных значений: Если высота родительского элемента не задана, процентное значение не будет работать.
- Внимательно используйте
height: 100vh;: Это может привести к проблемам с прокруткой, если контент выходит за пределы видимой области экрана. Рассмотрите возможность использованияmin-height: 100vh;чтобы элемент занимал минимум высоту экрана, но мог расширяться при необходимости. - Использование Flexbox или Grid Layout: Современные методы макетирования, такие как Flexbox и Grid Layout, часто являются более эффективными и гибкими способами управления высотой элементов, чем прямое задание height.