Ускорьте время загрузки страницы и уменьшите трафик, загружая их, когда они входят в область просмотра.
Если отложенная загрузка включена, изображения загружаются при входе в область просмотра. И не беспокойтесь о скачках контента при загрузке изображений. Благодаря пустому изображению-заполнителю, которое генерируется мгновенно, все будет на месте с самого начала.
Компонент 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);