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 |