滚动侦测

在页面滚动时触发事件和动画。

用法

滚动侦测组件监听页面滚动并根据滚动位置触发事件。例如,如果向下滚动页面并且一个元素首次出现在视口中,则可以触发一个平滑动画以淡入该元素。只需添加 data-uk-scrollspy 属性和以下选项即可。

数据属性 描述
cls:'MY-CLASS' 仅当元素首次出现在视口中时才应用该类。
repeat: true 每次元素出现在视口中时都应用该类。
delay:600 为动画添加毫秒级的延迟。

通常,动画组件的类会与滚动侦测一起使用。

示例

此示例使用 repeat: true 选项。向上和向下滚动以查看触发的动画。

淡入

Lorem ipsum dolor sit amet, consectetur adipisicing elit.

放大

Lorem ipsum dolor sit amet, consectetur adipisicing elit.

缩小

Lorem ipsum dolor sit amet, consectetur adipisicing elit.

顶部滑入

Lorem ipsum dolor sit amet, consectetur adipisicing elit.

底部滑入

Lorem ipsum dolor sit amet, consectetur adipisicing elit.

右侧滑入

Lorem ipsum dolor sit amet, consectetur adipisicing elit.

左侧滑入

Lorem ipsum dolor sit amet, consectetur adipisicing elit.

标记

<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-uk-scrollspy"{target:'MY-CLASS'}" 属性添加到容器元素,即可定位要在容器内动画的项目的选择器。使用延迟时,它将累积应用于滚动到视图中的行中的项目。当组中的下一行滚动到视图中时,延迟将重置。

示例

项目

Lorem ipsum dolor sit amet, consectetur adipisicing elit.

项目

Lorem ipsum dolor sit amet, consectetur adipisicing elit.

项目

Lorem ipsum dolor sit amet, consectetur adipisicing elit.

项目

Lorem ipsum dolor sit amet, consectetur adipisicing elit.

项目

Lorem ipsum dolor sit amet, consectetur adipisicing elit.

项目

Lorem ipsum dolor sit amet, consectetur adipisicing elit.

项目

Lorem ipsum dolor sit amet, consectetur adipisicing elit.

项目

Lorem ipsum dolor sit amet, consectetur adipisicing elit.

示例

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

    <!-- This item has no delay -->
    <div class="my-class">...</div>

    <!-- This item has a delay of 300ms -->
    <div class="my-class">...</div>

    <!-- This item has a delay of 600ms -->
    <div class="my-class">...</div>

</div>

JavaScript 选项

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

data-uk-scrollspy="{cls:'uk-animation-fade'}"
选项 可能的值 默认值 描述
cls 字符串 'uk-scrollspy-inview' 当元素在视图中时要添加的类。
initcls 字符串 'uk-scrollspy-init-inview' 当元素首次在视图中时要添加的类。
topoffset 整数 0 触发视图前的顶部偏移量。
leftoffset 整数 0 触发视图前的左侧偏移量。
repeat 布尔值 false 每次元素出现在视口中时都应用视图类。
delay 整数 0 延迟时间,单位为毫秒。

事件

您可以将回调绑定到以下事件以实现自定义功能

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

示例

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

滚动侦测导航

要根据站点滚动位置自动更新菜单中的活动菜单项,只需将数据属性 data-uk-scrollspy-nav 添加到任何导航。每个菜单项必须链接到站点相应部分的 ID。

数据属性 描述
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'}" 默认情况下,ScrollspyNav 会切换 uk-active 类。使用 cls 选项来使用您自己的类名。

有关滚动侦测导航的示例,请查看我们的滚动侦测测试页面

标记

<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 字符串 'uk-active' 要添加到活动元素的类
closest CSS 选择器 false 要应用活动类的元素选择器
topoffset 整数 0 滚动顶部偏移量
leftoffset 整数 0 滚动左侧偏移量
smoothscroll 布尔值 false 滚动动画

事件

名称 参数 描述
init.uk.scrollspy 事件 滚动侦测首次初始化
inview.uk.scrollspy 事件 元素进入视口
outview.uk.scrollspy 事件 元素离开视口