Элемент <picture> - адаптивное изображение в зависимости от размера экрана

Небольшие заметки о html, css, sql, php

Модератор: Valery

Правила форума
Гость видит 250 символов 1 сообщения
Аватара пользователя
Valery
Без группы
Без группы
Сообщения: 22321
На борту с: 07.02.2005 10:00
Награды: 5
Из: Тридевятое царство

Решено Элемент <picture> - адаптивное изображение в зависимости от размера экрана

Сообщение Valery »

<picture> позволяет браузеру выбирать между несколькими источниками изображений в зависимости от размера экрана и ориентация устройства.
Код выглядит так:

Код: Выделить всё

        <picture>
            <source media="(orientation: landscape)"
                srcset="images/stories/001-home/pc-img_5454_600.jpg 1200w,
                        images/stories/001-home/pc-img_5454_600.jpg 800w,
                        images/stories/001-home/pc-img_5454_600.jpg 600w"
                sizes="(min-width: 768px) 800px,
                       100vw">
            
            <source media="(orientation: portrait)"
                srcset="images/stories/001-home/mob-img_5454_800.jpg 800w,
                        images/stories/001-home/mob-img_5454_600.jpg 600w"
                sizes="(min-width: 768px) 800px,
                       100vw">
            
            <img src="images/stories/001-home/mob-img_5454_600.jpg" alt="Примеры работ" title="Откройте галерею" width="420" height="750" class="image_big center horizontal animated" >
        </picture>
Внутри элемента <picture> находятся два элемента <source> и один элемент <img>.

1. Первый элемент <source> (для ландшафтной ориентации)
(orientation: landscape) — этот элемент будет применяться только на устройствах, находящихся в горизонтальной ориентации.

(min-width: 768px) 800px — если ширина экрана 768 пикселей или больше, браузер покажет изображение 800 пикселей.
100vw — в противном случае (если условие не выполняется), изображение будет занимать 100% ширины окна просмотра.

2. Второй элемент <source> (для портретной ориентации)

media: "(orientation: portrait)" — элемент применяется только на устройствах в портретной ориентации (вертикально).

srcset:
- Здесь две версии изображений:
- "images/stories/001-home/mob-img_5454_800.jpg 800w" — изображение шириной 800 пикселей.
- "images/stories/001-home/mob-img_5454_600.jpg 600w" — изображение шириной 600 пикселей.

- sizes:
- "(min-width: 768px) 800px" — если ширина экрана 768 пикселей или больше, изображение будет отображаться шириной 800 пикселей.
- 100vw — в противном случае изображение будет занимать 100% ширины окна просмотра.

3. Элемент <img>

Код: Выделить всё

<img src="images/stories/001-home/mob-img_5454_600.jpg" alt="Примеры работ" title="Откройте галерею" width="420" height="750" class="image_big center horizontal animated">
Изображение по умолчанию, которое будет использоваться, если ни один из "<source>" не подходит. В данном случае это изображение для портретной ориентации.

- width и height: Указывают размеры изображения, помогая браузеру резервировать нужное пространство на странице до загрузки изображения.

Как это работает <picture> в сборе

1. Когда страница загружается, браузер проверяет условия медиа-запросов в элементах <source>.
2. Если устройство в ландшафтной ориентации и ширина экрана соответствует условиям, браузер выбирает подходящее изображение из первого <source>.
3. Если устройство в портретной ориентации, браузер выбирает изображение из второго <source>.
4. Если ни одно из условий не выполняется, браузер использует изображение по умолчанию из элемента <img>.
5. Браузер выбирает изображение с наилучшим разрешением, основываясь на srcset и sizes.

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