Адаптивная верстка и изображения: разные методы и тактики

От автора: создание адаптивного изображения — это не ракетостроение. Я уверен, что вы уже много их создавали, используя CSS. Однако гибкий размер — это только один из факторов, когда речь идет об адаптивных изображениях.

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

Различные подходы к реализации адаптивных изображений

  • Метод на основе пикселей устройства: этот подход позволяет использовать несколько версий одного и того же изображения с разным разрешением и выбирать наиболее подходящее для рендеринга в зависимости от разрешения экрана пользователя. Этот метод больше подходит для устройств, которые не отображают изображения с высоким разрешением.
  • Метод гибкого изображения: по умолчанию изображения не являются гибкими. Они, как правило, обрезаются или остаются в фиксированном размере при изменении размера экрана. С помощью метода плавного изображения вы можете вставить изображение в адаптивный макет и дать возможность растягивать или сжимать по мере необходимости.
  • Метод художественного направления: художественное направление — это обычная проблема, с которой мы сталкиваемся при работе с экранами разных размеров. Мы можем решить эту проблему, изменив содержимое изображения, обрезав изображение или используя другое изображение в зависимости от размера экрана пользователя.
  • Метод переключения типов: есть некоторые браузеры и устройства, которые не поддерживают современные типы изображений, такие как WebP. Метод переключения типов может использоваться для переключения между типами изображений, что позволяет предоставлять пользователю лучший контент в зависимости от совместимости устройства и браузера.

Давайте посмотрим, как мы можем реализовать эти методы.

Реализация адаптивных изображений

Как упоминалось ранее, существует несколько способов реализации адаптивных изображений, и важно знать, как лучше всего их реализовать, чтобы получить максимальную отдачу от ваших усилий.

По умолчанию, есть несколько отличных тегов и атрибутов, такие как img, picture, size и srcset использующихся в HTML для рендеринга изображений в веб — разработке. Теперь я покажу вам, как в кратчайшие сроки реализовать описанные выше методы с использованием этих тегов и атрибутов.

Метод на основе пикселей устройства

Прежде чем углубиться в подробности, позвольте мне рассказать вам о дисплеях высокой плотности. Современные флагманские мобильные устройства, такие как Samsung Galaxy S10, имеют дисплеи с 4-кратной плотностью, тогда как некоторые экономичные модели могут иметь дисплеи с низкой плотностью.

Если мы будем загружать изображение с высокой плотностью на дисплей с низкой плотностью, это приведет к очень плохому взаимодействию с пользователем и пустой трате ресурсов. Итак, мы будем использовать разные изображения для разных соотношений пикселей устройства.

В приведенном ниже примере мы рассмотрим два изображения: small-kitten.jpg с 320×240 пикселями и large-kitten.jpg с 640×480 пикселями, в результате чего последний подходит для дисплеев с высоким разрешением. ( дескриптор x показывает ожидаемое соотношение пикселей устройства).

<img 
  srcset="small-kitten.jpg 1x, large-kitten.jpg 2x"
  src="small-kitten.jpg" 
  alt="A cute kitten" 
/>

Если разрешение устройства пользователя превышает 640×480 пикселей, будет отображаться large-kitten.jpg, а в противном случае — изображение small-kitten.jpg.

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

Метод гибкого изображения

Этот метод ориентирован на использование одного и того же изображения с разными размерами, а не на использование разных изображений.

Например, мы можем реализовать метод гибкого изображения, указав размер изображения в относительных соотношениях, а не указав точные значения пикселей. Чаще всего используется метод max-width:100%.

<img 
  src="black-dog.jpg" 
  style="max-width: 100%; 
  height: auto;"
  alt="Black dog image"
>


Кроме того, существует усовершенствованный метод с гибкими изображениями для вычисления размеров с использованием ширины изображения и общей ширины страницы.

В качестве примера рассмотрим веб-страницу шириной 1200 пикселей и изображение шириной 500 пикселей. Тогда расчет того, сколько изображение займет на странице, будет следующим:

( ширина изображения [px] / ширина страницы [px] ) x 100 = ширина изображения[%] 
(500/1200) x 100 = 41,66%

Затем мы можем использовать это значение, как показано в приведенном ниже фрагменте кода. Это позволит изображению всегда масштабироваться в соответствии с размером веб-страницы.

<img 
  src="black-dog.jpg" 
  style="float: right; 
  width: 41.66%;"
  alt="Black dog image"
>

адапривное изображение
Однако этот расчет может вызвать некоторые проблемы, если область просмотра слишком велика или слишком мала.

Мы можем решить эту проблему, добавив максимальные и минимальные значения для ширины изображения в пикселях, чтобы отметить верхнюю и нижнюю границы.

<img 
  src="black-dog.jpg" 
  style="width: 41.66%; 
  max-width: 500px;"
  alt="Black dog image"
>

Метод Art Direction

Основная идея Art Direction — отображать разные изображения в зависимости от размеров экрана устройства. Мы можем решить эту проблему, переключившись на тег picture вместо использования тега img , поскольку он позволяет предоставлять изображения в нескольких соотношениях или нескольких точках фокусировки при просмотре на разных устройствах.

Знаменитый эксперимент с кошкой и методом художественного направления — Google Chrome

С помощью простого кода, подобнго приведенному ниже, можна получить вышеуказанный результат. Здесь мы предоставляем значения для двух разных атрибутов внутри элемента sourcemedia и srcset — определение размера изображения и источника соответственно.

<picture>
  <source media="(min-width: 650px)" srcset="kitten-stretching.png">
  <source media="(min-width: 465px)" srcset="kitten-sitting.png">

  <img src="kitten-curled.png" alt="A cute kitten">
</picture>

В приведенном выше примере, если размер экрана больше 560 пикселей, браузер будет показывать изображения из первого srcset, а если размер экрана больше 465 пикселей и ниже 650 пикселей, браузер будет использовать второе изображение.

Заметьте, что обычный тег img является последним вложенным тегом элемента picture, который имеет решающее значение для работы этого фрагмента кода. Он будет использоваться в качестве замены, когда условия в медиа-запросе не совпадают, и в качестве резервной копии в браузерах, которые не поддерживают элемент picture.

Метод переключения типа изображения

С быстрым развитием технологий, появляются и различные типы современных типов изображений, таких как avif, webp и другие. Эти типы изображений обеспечивают удобство для пользователей, хотя некоторые браузеры еще не поддерживают их. Но, мы можем использовать переключение типов изображений, изменяя таким образом формат изображения для разных браузеров.

Например, в приведенном ниже коде браузеру предлагается сначала загрузить .avif формат, а если это не удастся, то загрузить .webp . Если браузер не поддерживает эти форматы, то он будет использовать изображение .gif.

<picture>
  <source srcset="photo.avif" type="image/avif" />
  <source srcset="photo.webp" type="image/webp" />
  <img src="photo.gif" alt="photo" />
</picture>

Вы также можете использовать chrome DevTools для эмуляции этого, чтобы увидеть, как будет выглядеть ваше изображение, когда браузер не поддерживает современные типы изображений.

адаптивные изображения
Заключение

Я считаю, что теперь вы хорошо понимаете методы, которые мы можем использовать для реализации адаптивных изображений, и какие ситуации для них больше всего подходят.

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

Источник

По теме: Выравнивание изображения в контейнере при помощи CSS