Свойство CSS max-height
Используйте свойство CSS max-height для задания максимальной высоты области содержимого элемента. Примеры и описание значений.
Свойство max-height задаёт максимальную высоту, до которой элементу разрешено вырасти. Элемент может быть ниже этого значения, но никогда не будет выше. Если свойство height задано большим значением, max-height переопределяет его и ограничивает высоту.
Это полезно, когда содержимое имеет неизвестную или переменную длину — блок комментариев, выпадающая панель, окно чата, изображение или карточка — и вы хотите предотвратить влияние элемента на остальную часть макета. Используйте max-height совместно со свойством overflow, чтобы содержимое, превышающее лимит, прокручивалось, а не выходило за пределы блока.
На этой странице рассматриваются синтаксис, все допустимые значения, взаимодействие max-height с min-height и height, а также типичные практические сценарии.
Как разрешается max-height
Когда применяется несколько свойств, связанных с высотой, браузер разрешает их в фиксированном порядке приоритета:
min-height имеет приоритет над max-height который имеет приоритет над height
Иными словами, если задать height: 100px; max-height: 50px, элемент отобразится высотой 50px (max побеждает). Но если также задать min-height: 80px, элемент отобразится высотой 80px (min побеждает над max). Этот порядок важен при коллизии нескольких правил — min-height всегда имеет последнее слово.
Особенность процентных значений: процентное значение
max-heightвычисляется относительно высоты содержащего блока. Если у родителя нет явно заданной высоты (его высота равнаauto), проценту не на что опираться иmax-heightведёт себя какnone.
| Начальное значение | none |
|---|---|
| Применяется к | Всем элементам, кроме незамещаемых строчных элементов, столбцов таблиц и групп столбцов. |
| Наследуется | Нет. |
| Анимируется | Да. Высота поддаётся анимации. |
| Версия | CSS2 |
| DOM-синтаксис | object.style.maxHeight = "50px"; |
Синтаксис
Синтаксис свойства CSS max-height
max-height: none | length | percentage | calc() | max-content | min-content | fit-content | initial | inherit;Пример с фиксированным значением в px
В приведённом ниже примере абзац ограничен высотой 50px. Поскольку текст длиннее, overflow: auto добавляет полосу прокрутки, чтобы содержимое оставалось читаемым без нарушения макета.
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<style>
p {
max-height: 50px;
overflow: auto;
border: 1px solid #666;
padding: 5px;
}
</style>
</head>
<body>
<h2>Max-height property example</h2>
<p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.</p>
</body>
</html>Пример со значением в cm
Здесь у первого абзаца нет ограничения (max-height: none), а второй ограничен значением 2cm. Это наглядно демонстрирует, как одно и то же содержимое ведёт себя с ограничением и без него.
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<style>
.example1 {
max-height: 2cm;
overflow: auto;
border: 1px solid #666;
width: 300px;
}
</style>
</head>
<body>
<h2>Max-height property example</h2>
<h3>Max-height: none;</h3>
<p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged.</p>
<h3>Max-height: 2cm;</h3>
<p class="example1">Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged.</p>
</body>
</html>Пример с процентными значениями и calc()
Оба блока ниже имеют явно заданную height, поэтому процентные значения и calc() имеют базу для вычисления. Первый ограничен половиной собственной высоты; второй использует calc(), оставляя отступ в 50px ниже ограничения.
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<style>
.percent-example {
max-height: 50%;
overflow: auto;
border: 1px solid #666;
height: 200px;
}
.calc-example {
max-height: calc(100% - 50px);
overflow: auto;
border: 1px solid #666;
height: 300px;
}
</style>
</head>
<body>
<h2>Max-height property example</h2>
<h3>Max-height: 50%;</h3>
<p class="percent-example">Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged.</p>
<h3>Max-height: calc(100% - 50px);</h3>
<p class="calc-example">Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged.</p>
</body>
</html>Значения
| Значение | Описание | Пример |
|---|---|---|
| none | Значение по умолчанию. Максимальная высота не задана. | Пример » |
| length | Задаёт фиксированную максимальную высоту в px, pt, cm и т.д. | Пример » |
| percentage | Задаёт максимальную высоту как процент от высоты содержащего блока. | Пример » |
| calc() | Вычисляет максимальную высоту с помощью выражения. | Пример » |
| max-content | Задаёт максимальную высоту равной внутреннему максимальному размеру содержимого. | Пример » |
| min-content | Задаёт максимальную высоту равной внутреннему минимальному размеру содержимого. | Пример » |
| fit-content | Задаёт максимальную высоту по размеру содержимого. | Пример » |
| initial | Устанавливает свойство в значение по умолчанию. | Пример » |
| inherit | Наследует свойство от родительского элемента. | Пример » |
Типичные случаи применения
- Прокручиваемые панели. Выпадающий список, боковая панель или журнал чата, которые не должны превышать высоту viewport: задайте
max-heightвместе сoverflow-y: auto. - Адаптивные изображения.
img { max-height: 80vh; }предотвращает выход высокого изображения за пределы экрана, при этом оно масштабируется на маленьких viewport. - Сворачиваемые блоки / «читать далее». Анимируйте
max-heightот небольшого значения к большему, чтобы плавно раскрыть скрытое содержимое с помощью CSS-перехода (анимацияmax-heightработает там, где анимацияheight: autoневозможна). - Единообразные карточки. Ограничение
max-heightдля тела карточек не позволяет одной плитке в сетке стать несоразмерно большой.
Советы и особенности
max-heightустанавливает только верхний предел — он не принуждает элемент быть такой высоты. Для этого используйтеheightилиmin-height.- Без свойства
overflowсодержимое, превышающееmax-height, просто выйдет за пределы блока. Добавьтеoverflow: auto(прокрутка) илиoverflow: hidden(обрезка) для управления им. - Процентное значение
max-heightтребует, чтобы у родителя была вычисленная высота, иначе оно игнорируется. - Помните, что
borderиpaddingучитываются в размерах блока, если не заданоbox-sizing; по умолчаниюcontent-boxизмеряетmax-heightтолько относительно области содержимого. - Существует аналогичное свойство для ширины: см.
max-width.