Scrollspy

Запускайте события и анимации при прокрутке страницы.

Использование

Компонент Scrollspy "прослушивает" прокрутку страницы и запускает события в зависимости от положения прокрутки. Например, если вы прокрутите страницу вниз, и элемент появится в окне просмотра в первый раз, вы можете запустить плавную анимацию для элемента. Что необходимо? Просто добавьте атрибут data-uk-scrollspy и следующие параметры.

Атрибут data-* Описание
cls:'MY-CLASS' Применяет класс только при первом появлении элемента в области просмотра.
repeat: true Применяет класс каждый раз, когда элемент появляется в области просмотра.
delay:600 Добавляет задержку в миллисекундах к анимации.

Как правило, вместе с scrollspy, используются классы из компонента Animation .

Пример

В этом примере используется опция repeat: true. Прокрутите вверх и вниз, чтобы увидеть запущенную анимацию.

Fade

Далеко-далеко за словесными горами в стране анимации.

Scale up

Далеко-далеко за словесными горами в стране страниц.

Scale down

Далеко-далеко за словесными горами в стране анимации.

Slide top

Далеко-далеко за словесными горами в стране страниц.

Slide bottom

Далеко-далеко за словесными горами в стране прокрутки.

Slide right

Далеко-далеко за словесными горами в стране просмотра.

Slide left

Далеко-далеко за словесными горами в стране прокрутки.

Разметка

<div data-uk-scrollspy="{cls:'uk-animation-fade'}">...</div>

<div data-uk-scrollspy="{cls:'uk-animation-fade', repeat: true}">...</div>

<div data-uk-scrollspy="{cls:'uk-animation-fade', delay:900}">...</div>

Группы

Вы также можете сгруппировать элементы scrollspy, таким образом вам не придется применять data-* атрибут к каждому из них. Добавьте атрибут data-uk-scrollspy"{target:'MY-CLASS'}" к элементу контейнера, targetting селектор на элементы, которые вы хотите анимировать в контейнере. При использовании задержки она будет применена кумулятивно *постепенно к элементам в строке, которая прокручивается в поле зрения. Задержка будет сброшена для следующей строки в группе, когда она прокручивается в поле зрения.

Пример

Удивительно

Душа моя озарена неземной радостью, как эти чудесные утра.

Удивительно

Душа моя озарена неземной радостью, как эти чудесные утра.

Удивительно

Душа моя озарена неземной радостью, как эти чудесные утра.

Удивительно

Душа моя озарена неземной радостью, как эти чудесные утра.

Удивительно

Душа моя озарена неземной радостью, как эти чудесные утра.

Удивительно

Душа моя озарена неземной радостью, как эти чудесные утра.

Удивительно

Душа моя озарена неземной радостью, как эти чудесные утра.

Удивительно

Душа моя озарена неземной радостью, как эти чудесные утра.

Пример

<div data-uk-scrollspy="{cls:'uk-animation-fade', target:'.my-class', delay:300}">

    <!-- Эта штука не имеет задержки -->
    <div class="my-class">...</div>

    <!-- Эта штука имеет задержку 300 мс -->
    <div class="my-class">...</div>

    <!-- Эта штука имеет задержку 600 мс -->
    <div class="my-class">...</div>

</div>

JavaScript options

Это пример того, как установить параметры через атрибут:

data-uk-scrollspy="{cls:'uk-animation-fade'}"
Option Possible value Default Описание
cls string 'uk-scrollspy-inview' Class to add when the element is in view.
initcls string 'uk-scrollspy-init-inview' Class to add when the element is in view for the first time.
topoffset integer 0 Top offset before triggering in view.
leftoffset integer 0 Left offset before triggering in view.
repeat boolean false Applies the in view class every time the element appears in the viewport.
delay integer 0 Delay time in ms.

Events

Вы можете привязать обратные вызовы *callbacks к следующим событиям для пользовательской функциональности:

Название Описание
init.uk.scrollspy Срабатывает, когда элемент изначально находится в области просмотра.
inview.uk.scrollspy Срабатывает, когда элемент находится в области просмотра.
outview.uk.scrollspy Срабатывает, когда элемент покидает область просмотра.

Пример

$('[data-uk-scrollspy]').on('inview.uk.scrollspy', function(){
    // custom code...
});

Scrollspy Nav

Чтобы автоматически обновить активный пункт меню в меню в зависимости от позиции прокрутки вашего сайта, просто добавьте атрибут данных data-uk-scrollspy-nav в любую навигацию. Каждый пункт меню должен содержать ссылку на уникальный идентификатор (ID) соответствующей части сайта.

Data attribute Описание
data-uk-scrollspy-nav Запускает JavaScript, необходимый для функциональности scrollspy nav.
data-uk-scrollspy-nav="{closest:'MY-SELECTOR'}" Ищет ближайший элемент, который соответствует селектору, проверяя сам элемент и проходя через его предков в дереве DOM.
data-uk-scrollspy-nav="{smoothscroll:true}" Применяет компонент Smooth scroll при переходе между различными разделами сайта.
data-uk-scrollspy-nav="{cls:'MY-CLASS'}" По умолчанию ScrollspyNav переключает класс uk-active. Используйте опцию cls, чтобы использовать свое собственное имя класса.

Пример навигации scrollspy nav можно увидеть на странице Scrollspy test page.

Разметка

<ul class="uk-nav uk-nav-side" data-uk-scrollspy-nav="{closest:'li', smoothscroll:true}">
    <li><a href="#my-id">...</a></li>
    <li><a href="#my-id2">...</a></li>
</ul>

<div id="my-id">...</div>
<div id="my-id2">...</div>

JavaScript options

Это пример того, как установить параметры через атрибут:

data-uk-scrollspy-nav="{smoothscroll:true}"
Option Possible value Default Description
cls string 'uk-active' Класс добавляемый к активному элементу
closest CSS selector false Селектор элемента, к которому применяется активный класс
topoffset integer 0 Scroll top-offsset
leftoffset integer 0 Scroll left-offsset
smoothscroll boolean false Scroll animation

Events

Name Parameter Description
init.uk.scrollspy event On scrollspy first init
inview.uk.scrollspy event Element entered view-port
outview.uk.scrollspy event Element left view-port