CSS: пропорции
Управляем пропорциями изображения с помощью CSS
Раннее мы уже касались вопроса создания изображений, сохраняющих свои пропорции, с помощью CSS и HTML.
- “Пропорции для img”,
- “Как управлять размерами изображения с помощью CSS?”.
Сегодня мы разберем еще один простой и достаточно эффективный метод создания адаптивной картинки с определенными пропорциями. Этот метод, использующий пользовательские переменные, известен под именем “padding hack”.
Итак, пока все ждут появления поддержки CSS-свойства aspect-ratio в различных браузерах, можно сделать следующее:
- установить высоту родительского элемента равной 0,
- установить
padding-bottom
родительского элемента равным(height/width)*100%
(height/width - определяет необходимой соотношение сторон), - дочерний элемент должен наследовать размеры родительского блока и иметь абсолютное позиционирование,
- кроме того, дочернему элементу нужно добавить свойство
object-fit: cover
, чтобы предотвратить возможное искажение изображения, - наконец, нужно заменить
height/width
на пользовательское свойство--aspect-ratio
- это улучшит читабельность кода и упростит его дальнейшую модификацию.
HTML
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;
}
Спасибо за внимание.
Написано по материалам статьи Sebastiano Guerriero “Aspect Ratio in CSS”.