Резервируем место под изображение с помощью aspect-ratio

Резервировать место под изображение можно несколькими способами, но наиболее оптимальным является использование CSS-свойства aspect-ratio

Если вы когда-либо проверяли оптимизированность страницы сайта, то не могли не заметить, что сервисы проверок всегда обращают ваше внимание на необходимость резервирования места для загружаемых изображений. Объяснение такой необходимости находится в ее сути: ваш браузер должен понимать и выделять блок правильных размеров, в который будет подгружено изображение – сразу или при его появлении в области просмотра.

В “доадаптивные” времена решение было простым. Достаточно было указать физические размеры изображения в пикселях прямо в html-коде в виде атрибутов height и width:



Это прекрасно работало до тех пор, пока для сайтов не начала применяться адаптивная верстка. Пиксельная размерность уступила место процентам и относительным единицам измерения. Изображения стали растягиваться до размеров родительского контейнера, из-за чего установить их размеры в конкретный момент (т. е. для конкретной области просмотра) стало невозможно. Исключением можно считать разве что мелкие элементы в виде иконок, которые редко или вообще не меняют размеры на различных дисплеях.

В мае 2009 года некий Тьери Кобленц придумал гениальное решение, которое в дальнейшем получило название Padding Top Hack. Суть его заключается в том, что процентные значения CSS-свойства padding-top и padding-bottom зависят от… ширины родительского элемента. Другими словами, если для блока шириной 357 пикселей указать значение padding-top как 100%, то его пересчитанное значение будет равно все тем же 357 пикселям. В результате визуально padding-top превратится в идеальный квадрат размером 357 на 357 пикселей. Не использовать такую возможность было просто глупо!

Решение в стиле Padding Top Hack можно продемонстрировать применительно к следующей разметке:


 
Some Content

Стили:

.parent { padding-top: 56.25%; height: 0; position: relative; overflow: hidden; }
.child  { height: 100%; width: 100%; position: absolute; top: 0; left: 0; }

Вся эта история прекрасно работала для, например, размещения в тексте Youtube-видео. Соответственно, и место под изображения с соответствующим соотношением сторон резервировалось прекрасно. И все же осадочек присутствовал: все это было слегка мудреным и требовало наличия родительского элемента.

Впрочем, Padding Top Hack слегка упрощался за счет CSS-функции calc():

.parent { padding-top: calc(9 / 16 * 100%); height: 0; position: relative; overflow: hidden; }
.child  { height: 100%; width: 100%; position: absolute; top: 0; left: 0; }

И все же, “умные люди наверху” суть проблемы ухватили, и, после непродолжительной паузы, придумали CSS-свойство aspect-ratio. Оно позволило явно указывать соотношение сторон для элемента. Таким образом, атрибуты height и width, а с ними и Padding Top Hack канули в Лету.

Теперь для изображения (или любого другого HTML-элемента) можно просто указать:

img { aspect-ratio: 4/3; }

или

img { aspect-ratio: 1.5; }

, и ваш браузер при любом размере экрана по соотношению сторон вычислит высоту для изображения с шириной, равной 100% от родителя. Соответственно, необходимое место будет выделено, и при прокрутке до области просмотра ваши lazyload-изображения не заставят картинку "елозить" при их прогрузке.

Конечно, область применения свойства aspect-ratio не ограничивается одной только оптимизацией загрузки изображений. Но это, как говорится, уже другая история...

И последнее: все актуальные браузеры получили полную и безоговорочную поддержку CSS-свойства aspect-ratio без каких-либо префиксов.

3 минут чтения Sodium Carbonate

Комментарии (0)

Комментарии отсутствуют
Добавление комментариев доступно только зарегистрированным пользователям

Автор контента

webitproff

Оффлайн

Sodium Carbonate

Последняя авторизация: 18.07.2026 14:46

  • Страница размещена: 17.07.2020 05:15
  • Последнее обновление: 12.11.2021 17:34

Похожие страницы

Git и FTP как с их помощью оптимизировать веб-разработку
1 У каждого разработчика есть свой стиль или, если хотите, типовая методология работы с проектами. Как правило, на
Разработка и поддержка сайта с помощью Git
2 Разработка и поддержка сайта с помощью Git Данная статья будет полезна тем разработчикам, кто стремиться добиться
Плагин "PayMarketBold" - заметное место в списке
3 Плагин «PayMarketBold» - услуга "яркой" карточки товара или услуги для модуля витрины сборки сайта фриланс
Скрипт «Freelance MarketPlace» Это готовый сайт "под ключ"?
4 «Freelance MarketPlace» - это универсальный движок маркетплейса. Это готовый сайт "под ключ"? Это очень
Установка Open Server 6 под движок Cotonti Siena
5 Установка Open Server 6 (2025), Cotonti Siena 0.9.26 и phpMyAdmin Руководство позволяет новичкам без технических знаний