Responsive Images

Качество

Растр и вектор 400% zoom

400percentRastr
Растр PNG
400percentVector
Вектор SVG

Цена загрузки изображения

Растр: размеры jpg файла после изменения размера

размер изображения % сжатия размер файла, kb цена, коп цена в %
1920x1080 0% 976 3.4 100.00%
960x540 50% 397 1.4 40.0%
768x432 60% 263 0.9 27.0%
480x270 75% 114 0.4 11.5%
320x180 84% 54 0.2 5.5%

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

Расчет цены взят по этой ссылке как 200Мб/7грн

Искусcтво обрезки деревьев фотографий

Что обрезать - горизонталь или вертикаль?

Art direction problem!

Форматы изображений

PNG
PNG
JPG
JPG
GIF
GIF
WebP
WebP
JXR
JXR
SVG
SVG

4 причины использовать Responsive Images

  1. Необходимость изменения размеров size изображения
  2. Оптимизировать выбор загрузки изображения в зависимомсти от dpi экрана устройства
  3. Обрезание части изображения (art direction problem) art в зависимости от ширины экрана
  4. Выбор и загрузка разных форматов mime файлов для разных браузеров в зависимости от поддержки браузера

Синтаксис

img src & srcset

size dpi art mime

Изображения с фиксированной шириной для экранов с различным dpi

Принцип расчета размеров изображения:
ширина * K dpi, длина * K dpi

Пример: 
            K dpi = 1   // 800x600.jpg,
            K dpi = 1.5 // 1200x900.jpg,
            K dpi = 2   // 1600x1200.jpg,
                 
src 1x 2x

Синтаксис для тега img:


<img src="sea_800x600.jpg"
     srcset="sea_1200x900.jpg 1.5x, 
             sea_1600x1200.jpg 2x"
     width="800" 
     alt="sea"
>
            
size dpi art mime

Изображения с переменной шириной экранов

// медиаусловия атрибута sizes

Синтаксис для тега img:


<img sizes="(max-width: 480px) 100vw,
	    (max-width: 800px) 50vw,
	     calc(33vw - 100px)"
     srcset="sea-200.jpg 200w,
	     sea-400.jpg 400w,
	     sea-800.jpg 800w,
	     sea-1600.jpg 1600w"
     src="sea-400.jpg" alt="sea"
>

Браузер может выбирать любой ресурс, который его алгоритмы считают нужным. Можно предпалагать, что браузер будет выбирать таким образом:

    для экрана в 320px подходит правило (max-width: 480px)
    и изображение должно поместиться в 100vw (в 320px)
    из имеющихся файлов подходящит sea-400.jpg под 400w
    и этот файл будет сжат браузером до 320px


    для экрана в 640px подходит правило (max-width: 800px)
    и изображение должно поместиться в 50vw (в 320px)
    итого подходит тот же файл sea-400.jpg под 400w
    и этот файл будет сжат браузером до 320px

Тег picture

Тег picture это контейнер для одного или более элементов <source> и одного элемента <img>

Главное отличие от img - наличие хорошо описанных в спецификации правил отбора изображений

Принцип работы - если условия отбора совпали, то подгружается первый подходящий файл.

Если условия отбора не подошли, то загружается изображение из обязательного тега <img>

Атрибуты тега source:

size dpi art mime

<picture>
    <source media="(min-width: 720px)"
            srcset="large.jpg">
    <source media="(min-width: 512px)"
            srcset="middle.jpg">
    <img    src="small.jpg"
            alt="sea">
</picture>
            
size dpi art mime

<picture>
    <source type="image/webp"
            srcset="sea.webp">
    <source type="image/vnd.ms-photo"
            srcset="sea.jpxr">
    <img src="sea.jpg"
        alt="sea">
</picture>
size dpi art mime

<picture>
    <source
        media="(min-width: 1024px)"
        srcset="fullImage.jpg">
    <img
        src="cutImage.jpg"
        alt="sea">
</picture> 

Вместо выводов

Для этого сайта были использованы идеи с сайта, который рекомендуется прочитать для закрепления материала

back