Ускорьте время загрузки страницы и уменьшите трафик, загружая их, когда они входят в область просмотра.
Если отложенная загрузка включена, изображения загружаются при входе в область просмотра. И не беспокойтесь о скачках контента при загрузке изображений. Благодаря пустому изображению-заполнителю, которое генерируется мгновенно, все будет на месте с самого начала.
Компонент Image значительно повышает скорость загрузки ваших страниц с помощью следующих методов:
- Сначала загружаются только изображения, которые изначально находятся в окне просмотра.
- Другие изображения загружаются с применением Lazy Load, когда они попадают в окно просмотра при прокрутке.
- Пустое изображение-заполнитель генерируется мгновенно, чтобы предотвратить скачки содержимого, когда изображения загружаются или еще не находятся в области просмотра.
- Опционально, изображение-заполнитель может иметь любой вид фона или анимацию предварительной загрузки.
Компонент Изображения поддерживает элементы img и свойство CSS background-image. Атрибут srcset для изображений поддерживает также
создание оптимальных изображений для устройств различной ширины и плотности пикселей (Retina).
Компонент Image даже позволяет использовать srcset для свойства background-image!
Как использовать компонент Image в UIkit 3. Все о картинках на сайте.
Чтобы начать использовать компонент, добавьте атрибут uk-img к элементу <img> и добавьте data- префикс src к атрибуту, чтобы он мог прочитать data-src.
<img data-src="" width="" height="" alt="" uk-img>
Атрибуты width и height необходимы, чтобы можно было создать пустой заполнитель в таким же размером, что и изображение.
В качестве альтернативы, используйте data-width и data-height, если вы не хотите устанавливать явные атрибуты.
Srcset
Для использования атрибута srcset добавьте префикс data-srcset.
<img data-src="" data-srcset="" sizes="" width="" height="" alt="" uk-img>
<img data-src="https://images.unsplash.com/photo-1522201949034-507737bce479?fit=crop&w=650&h=433&q=80" data-srcset="https://images.unsplash.com/photo-1522201949034-507737bce479?fit=crop&w=650&h=433&q=80 650w, https://images.unsplash.com/photo-1522201949034-507737bce479?fit=crop&w=1300&h=866&q=80 1300w" sizes="(min-width: 650px) 650px, 100vw" width="650" height="433" alt="" uk-img>
Фоновое изображение
Чтобы использовать этот компонент с CSS свойством background-image, добавьте его к <div> или любому другому элементу.
<div data-src="" uk-img>...</div>
Фоновое изображение
<div class="uk-height-medium uk-flex uk-flex-center uk-flex-middle uk-background-cover uk-light" data-src="images/photo.jpg" uk-img> <h2>Фоновое изображение</h2> </div>
Фоновое изображение вместе с with Srcset
Компонент Изображения позволяет использовать srcset для фонов. Задайте атрибут data-srcset.
Если вам нужно использовать атрибут sizes, добавьте префикс data-sizes.
<div data-src="" data-srcset="" data-sizes="" uk-img>...</div>
Фоновое изображение
<div class="uk-height-medium uk-flex uk-flex-center uk-flex-middle uk-background-cover uk-light" data-src="https://images.unsplash.com/photo-1490822180406-880c226c150b?fit=crop&w=650&h=433&q=80" data-srcset="https://images.unsplash.com/photo-1490822180406-880c226c150b?fit=crop&w=650&h=433&q=80 650w, https://images.unsplash.com/photo-1490822180406-880c226c150b?fit=crop&w=1300&h=866&q=80 1300w" data-sizes="(min-width: 650px) 650px, 100vw" uk-img> <h2>Фоновое изображение</h2> </div>
Опция Target
Обычно изображение начинает загружаться, когда оно входит в область просмотра.
Чтобы начать загрузку изображений на основе видимости другого элемента в области просмотра, используйте опцию target.
Это очень полезно для ленивой загрузки изображений в компонентах Слайдшоу и Слайдер.
<img data-src="" width="" height="" alt="" uk-img="target: .my-class">
В следующем примере загружаются все изображения на слайдах, как только слайд-шоу входит в область просмотра.
Оно использует !.uk-slideshow-items в качестве целевого селектора.
Символ ! служит для поиска по DOM следующего родительского элемента с классом .uk-slideshow-items.
<div class="uk-position-relative uk-visible-toggle uk-light" uk-slideshow> <ul class="uk-slideshow-items"> <li> <img data-src="images/photo.jpg" width="1800" height="1200" alt="" uk-cover uk-img="target: !.uk-slideshow-items"> </li> <li> <img data-src="images/dark.jpg" width="1800" height="1200" alt="" uk-cover uk-img="target: !.uk-slideshow-items"> </li> <li> <img data-src="images/light.jpg" width="1800" height="1200" alt="" uk-cover uk-img="target: !.uk-slideshow-items"> </li> </ul> <a class="uk-position-center-left uk-position-small uk-hidden-hover" href="#" uk-slidenav-previous uk-slideshow-item="previous"></a> <a class="uk-position-center-right uk-position-small uk-hidden-hover" href="#" uk-slidenav-next uk-slideshow-item="next"></a> </div>
Загрузка предыдущего и последующего слайдов
Также возможно загрузить только изображение активного слайда и использовать ленивую загрузку изображений других слайдов.
Просто наведите на предыдущий и следующий слайды для каждого изображения, используя опцию target: !* -*, !* +*.
Есть два исключения, где вы должны выбрать первый и последний слайды.
| Селектор | Описание |
|---|---|
!* -* |
Ищет прямого родителя (!*) и выбирает предыдущий элемент (-*). |
!* +* |
Ищет прямого родителя (!*) и выбирает последующий элемент (+*). |
!.uk-slideshow-items > :last-child |
Ищет следующий родительский элемент с классом .uk-slideshow-item и выбирает последний. |
!.uk-slideshow-items > :first-child |
Ищет следующий родительский элемент с классом .uk-slideshow-item и выбирает последнего первый. |
<ul class="uk-slideshow-items">
<li>
<img data-src="" width="" height="" alt="" uk-img="target: !ul > :last-child, !* +*">
</li>
<li>
<img data-src="" width="" height="" alt="" uk-img="target: !* -*, !* +*">
</li>
<li>
<img data-src="" width="" height="" alt="" uk-img="target: !* -*, !* +*">
</li>
<li>
<img data-src="" width="" height="" alt="" uk-img="target: !* -*, !ul > :first-child">
</li>
</ul>
<div class="uk-position-relative uk-visible-toggle uk-light" uk-slideshow> <ul class="uk-slideshow-items"> <li> <img data-src="images/photo.jpg" width="1800" height="1200" alt="" uk-cover uk-img="target: !ul > :last-child, !* +*"> </li> <li> <img data-src="images/dark.jpg" width="1800" height="1200" alt="" uk-cover uk-img="target: !* -*, !* +*"> </li> <li> <img data-src="images/light.jpg" width="1800" height="1200" alt="" uk-cover uk-img="target: !* -*, !ul > :first-child"> </li> </ul> <a class="uk-position-center-left uk-position-small uk-hidden-hover" href="#" uk-slidenav-previous uk-slideshow-item="previous"></a> <a class="uk-position-center-right uk-position-small uk-hidden-hover" href="#" uk-slidenav-next uk-slideshow-item="next"></a> </div>
Пользовательский заполнитель изображения
По умолчанию изображение-заполнитель является прозрачным.
Используйте селектор img[data-src][src*='data:image'], чтобы добавить собственный фон или прелоадер.
img[data-src][src*='data:image'] { background: rgba(0,0,0,0.1); }
Опции компонента
Любой из этих параметров может быть применен к атрибуту компонента. Разделяйте несколько вариантов точкой с запятой. Подробнее о синтаксисе
| Опция | Значение | По умолчанию | Описание |
|---|---|---|---|
dataSrc |
String | '' | Атрибут изображения src. |
dataSrcset |
String | false | Атрибут изображения srcset. |
sizes |
String | false | Атрибут изображения sizes. |
width |
String | false | Атрибут изображения width. Он будет использоваться для определения ширины картинки-заполнителя и положения изображения в документе. |
height |
String | false | Атрибут изображения height. Он будет использоваться для определения высоты картинки-заполнителя и положения изображения в документе. |
offsetTop |
String | '50vh' | Смещение изменяет ограничивающий прямоугольник окна просмотра перед вычислением пересечения с изображением. |
offsetLeft |
String | 0 | Смещение увеличивает ограничивающую рамку области просмотра по горизонтали перед вычислением пересечения с изображением. |
target |
String | false | Список целей, чьи ограничивающие рамки будут использоваться для вычисления пересечения с изображением. По умолчанию используется само изображение. |
JavaScript
Подробнее о Компонентах JS.
Инициализация
UIkit.img(element, options);
