滚动监听/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 | 元素离开视口后触发 |