滚动监听/Scrollspy

在滚动页面时,触发一些事件及动画。

用法

滚动监听组件监听页面滚动,并触发基于滚动位置的事件。例如,当你向下滚动页面时,你可以使首次出现在视窗中的一个元素触发一个平滑淡入的动画。只需添加带有以下选项的 data-uk-scrollspy 属性。

Data 属性 描述
cls:'MY-CLASS' 只有元素首次出现在视窗时才应用这个属性中的class。
repeat: true 元素每次出现在视窗中时,都应用这个类。
delay:600 添加以毫秒为单位的动画延迟。

通常,动画组件中的类与滚动监视一起搭配使用。

示例

下面的例字使用了repeat: true 选项。向上或向下滚动可以看到被触发的动画效果。

Fade

Lorem ipsum dolor sit amet, consectetur adipisicing elit.

Scale up

Lorem ipsum dolor sit amet, consectetur adipisicing elit.

Scale down

Lorem ipsum dolor sit amet, consectetur adipisicing elit.

Slide top

Lorem ipsum dolor sit amet, consectetur adipisicing elit.

Slide bottom

Lorem ipsum dolor sit amet, consectetur adipisicing elit.

Slide right

Lorem ipsum dolor sit amet, consectetur adipisicing elit.

Slide left

Lorem ipsum dolor sit amet, consectetur adipisicing elit.

Markup

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

你还可以将多个需要添加滚动监听效果的元素编成一组,这样就不必分别为每个元素添加 data 属性了。只需要添加 data-uk-scollspy"{target:'MY-CLASS'}" 属性到容器元素,将 target 选项指向容器中你想要添加动画效果的条目。当使用 delay(延时)时,将会为进入视野的一行条目添加逐次显现的效果。这个延时效果会为同一组内的下一行元素滚动进入视野时重置。

Example

Item

Lorem ipsum dolor sit amet, consectetur adipisicing elit.

Item

Lorem ipsum dolor sit amet, consectetur adipisicing elit.

Item

Lorem ipsum dolor sit amet, consectetur adipisicing elit.

Item

Lorem ipsum dolor sit amet, consectetur adipisicing elit.

Item

Lorem ipsum dolor sit amet, consectetur adipisicing elit.

Item

Lorem ipsum dolor sit amet, consectetur adipisicing elit.

Item

Lorem ipsum dolor sit amet, consectetur adipisicing elit.

Item

Lorem ipsum dolor sit amet, consectetur adipisicing elit.

Example

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

    <!-- 无延时 -->
    <div class="my-class">...</div>

    <!-- 300ms 延时 -->
    <div class="my-class">...</div>

    <!-- 600ms 延时 -->
    <div class="my-class">...</div>

</div>

JavaScript选项

这是一个如何通过属性设置选项的示例:

data-uk-scrollspy="{cls:'uk-animation-fade'}"
选项 可用的值 默认值 描述
cls string 'uk-scrollspy-inview' 当元素出现在视口内时添加的类。
initcls string 'uk-scrollspy-init-inview' 当元素首次出现在视口内时添加的类。
topoffset integer 0 在视口中触发事件前的顶部偏移量。
leftoffset integer 0 在视口中触发事件前的左部偏移量。
repeat boolean false 元素是否每次出现在视口中都应用 cls 中提到的类。
delay integer 0 以毫秒为单位的延时。

事件

你可以为以下事件绑定回调函数,以实现自定义功能:

名称 描述
uk.scrollspy.init 当元素开始进入视口时触发。
uk.scrollspy.inview 当元素在视口中时触发。
uk.scrollspy.outview 当元素离开视口时触发。

示例

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

滚动监听导航/Scrollspy Nav

根据你网站滚动条的位置来自动更新所对应的导航状态,只需添加Data属性 data-uk-scrollspy-nav 到任意导航栏中。每个菜单项必须链接至网站中网站中对应的具有相同ID的部分。

Data属性 描述
data-uk-scrollspy-nav 触发滚动监听导航的功能必须的JavaScript。
data-uk-scrollspy-nav="{closest:'MY-SELECTOR'}" 通过遍历查找此DOM树中最接近的节点元素进行匹配。
data-uk-scrollspy-nav="{smoothscroll:true}" 在网页的不同部分之间跳转时,应用平滑滚动组件
data-uk-scrollspy-nav="{cls:'MY-CLASS'}" 默认地,滚动监听导航会拨动 uk-active 类。使用 cls 选项使用你自己的类名。

对于滚动监听的例子,可以查看滚动监听测试页面

Code

<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选项

这是一个如何通过属性设置选项的示例:

data-uk-scrollspy-nav="{smoothscroll:true}"
选项 可用的值 默认值 描述
cls string 'uk-active' 添加其中的class以激活元素。
closest CSS 选择器 false 将上面所述的类,应用到本选择器对应的元素中。
topoffset integer 0 滚动的顶部偏移量。
leftoffset integer 0 滚动的左部偏移量。
smoothscroll boolean false 是否显示平滑的滚动动画效果。

事件

名称 参数 描述
init.uk.scrollspy event 滚动监听第一次初始化时触发
inview.uk.scrollspy event 元素进入视口后触发
outview.uk.scrollspy event 元素离开视口后触发