Изображения

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

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

Компонент 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, если вы не хотите устанавливать явные атрибуты.

  • <img data-src="images/light.jpg" width="1800" height="1200" alt="" uk-img>

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);