滚动监听/Scrollspy

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

用法

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

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

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

示例

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

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

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 元素离开视口后触发
文章导航