img
aspect-ratio
Установка высоты родительского элемента : Начнем с того, что зададим высоту родительского элемента равной нулю. Это важно для того, чтобы далее использовать отступы (padding) для задания соотношения сторон. Использование padding-bottom : Основная хитрость заключается в использовании свойства padding-bottom
, значение которого рассчитывается как (высота/ширина) * 100%
. Это определяет соотношение сторон, которое мы хотим сохранить. Например, для соотношения 16:9, padding-bottom будет равен 56.25%
(то есть 9/16 * 100%
). Абсолютное позиционирование дочернего элемента : Затем дочерний элемент, Использование object-fit для изображения : Чтобы предотвратить искажение изображения при его адаптации под размеры блока, добавляем свойство object-fit: cover
. Это обеспечит, что изображение всегда будет заполнять блок, сохраняя свои пропорции. : Чтобы код Упрощение с помощью пользовательских свойств (height/width)
на пользовательское свойство --aspect-ratio
. Это позволяет легко модифицировать соотношение сторон при необходимости.
<div class="custom-aspect-ratio">
<img src="img.jpg" alt="image description">
</div>
CSS:
.custom-aspect-ratio {
--aspect-ratio: 16/9; /* Задаем соотношение сторон */
position: relative;
height: 0;
padding-bottom: calc(100% / (var(--aspect-ratio)));
}
.custom-aspect-ratio > * {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
object-fit: cover; /* Обеспечиваем сохранение пропорций изображения */
}
Отступы ( padding-bottom
) создают пространство для элемента на основе соотношения сторон. Дочерний элемент ( img
) растягивается на всю площадь родительского блока, занимая все доступное пространство и сохраняя пропорции благодаря object-fit: cover
.
aspect-ratio