Sticky效果。使元素始终保持在时候顶部,比如常见的的附着在顶部的导航栏。
要创建在向下滚动站点时仍保持在视口顶部的元素,添加uk-sticky
属性到该元素。
<div uk-sticky></div>
<div class="uk-card uk-card-default uk-card-body" style="z-index: 980;" uk-sticky="bottom: #offset">Stick to the top</div>
Note 上方示例中的元素只在向下滚动到下一个标题之前是粘附的,随后会消失。这样做是为了避免你的屏幕上堆满一大堆的粘性容器使屏幕看起来杂乱不堪。
可以将元素定位在视口边缘的下方一点的位置。需要添加offset属性以及以像素为单位的距离值,如下例:
<div uk-sticky="offset: 100"></div>
<div class="uk-card uk-card-default uk-card-body" style="z-index: 980;" uk-sticky="offset: 100; bottom: #top">Stick 100px below the top</div>
要延迟应用粘附行为,请添加top
属性,该属性的值可以由以像素为单位的数字定义偏移量,也可以由市口高度或CSS选择器定义。
<!-- Sticks after 100px of scrolling -->
<div uk-sticky="top: 100"></div>
<!-- Sticks after 100vh -->
<div uk-sticky="top: 100vh"></div>
<!-- Sticks to the top of the container -->
<div id="my-id">
<div uk-sticky="top: #my-id"></div>
</div>
<div class="uk-child-width-1-2@s" uk-grid>
<div>
<div class="uk-card uk-card-default uk-card-body" style="z-index: 980;" uk-sticky="top: 200; bottom: #animation">Stick to the top but only after 200px scrolling</div>
</div>
<div>
<div id="container-1" class="uk-background-muted uk-height-medium" style="margin-bottom: 200px;">
<div class="uk-card uk-card-default uk-card-body" style="z-index: 980;" uk-sticky="top: #container-1; bottom: #animation">Stick to the top but below the box</div>
</div>
</div>
</div>
添加Animation 组件中的动画效果,可以使粘附元素平滑地再次出现。
<div uk-sticky="animation: uk-animation-slide-top"></div>
<div class="uk-card uk-card-default uk-card-body" style="margin-bottom: 200px; z-index: 980;" uk-sticky="top: 100; animation: uk-animation-slide-top; bottom: #sticky-on-scroll-up">Animation Slide Top</div>
可以使粘附元素只在在向上滚动时才显示,这样可以以节省网页空间。结合动画效果,可以带来非常流畅的体验。
<div uk-sticky="show-on-up: true"></div>
<div class="uk-card uk-card-default uk-card-body" style="margin-bottom: 200px; z-index: 980;" uk-sticky="show-on-up: true; animation: uk-animation-slide-top; bottom: #bottom">Slide in on scroll up</div>
将粘附行为绑定到指定元素,使其在页面滚动过的该元素后就不再显示粘附的元素。
<!-- Sticks until the bottom of its parent container -->
<div>
<div uk-sticky="bottom: true"></div>
</div>
<!-- Sticks until the second container -->
<div uk-sticky="bottom: #my-id"></div>
<div id="my-id"></div>
<div class="uk-child-width-1-2@s" uk-grid>
<div>
<div class="uk-background-muted uk-height-medium">
<div class="uk-height-medium uk-background-muted">
<div class="uk-card uk-card-default uk-card-body" style="z-index: 980;" uk-sticky="bottom: true">Stick until the bottom of its parent container</div>
</div>
</div>
</div>
<div>
<div>
<div class="uk-card uk-card-default uk-card-body" style="z-index: 980;" uk-sticky="bottom: #container-2">Stick until the next headline</div>
</div>
</div>
</div>
<h3 id="container-2">Some Headline</h3>
通过在uk-sticky
属性上添加media
选项并添加适当的视口宽度,可以针对不同设备宽度禁用粘滞行为。添加一个以像素为单位的数字,例如media: 640
,或添加一个断点例如media: @m
。元素将在指定的视口宽度以上的设备带有粘附效果,低于该宽度则不显示。
<div uk-sticky="media: 640"></div>
以下选项中的任何一个都可以应用于组件属性。用分号分隔多个选项。 了解更多
Option | Value | Default | Description |
---|---|---|---|
top |
Number, viewport height, CSS selector | 0 |
元素粘附顶部的偏移量。 |
bottom |
Boolean, CSS selector | false |
直到元素开始粘附的底部偏移量。(true:父元素,以“!”为前缀的父元素选择器) |
offset |
String | 0 |
粘附元素的偏移量 |
animation |
String | false |
元素开始粘附时的动画。 |
cls-active |
String | uk-active |
元素粘附时添加的 class |
cls-inactive |
String | '' |
元素未粘附时添加的 class |
width-element |
CSS selector | false |
粘附模式下获取宽度的CSS选择器。 |
show-on-up |
Boolean | false |
只在向上滚动时显示粘附的元素 |
media |
Integer, String | false |
激活粘附状态的条件-可以是数值为整数的宽度(例如640),或断点(例如@ s,@ m,@ l,@ xl),或任何有效的媒体查询(例如(min-width: 900px))。 |
target-offset |
Boolean, Number | false |
确保附着元素不会在DOM就绪后通过位置 hash(location hash)越过目标元素。 |
了解更多关于JavaScript 组件的内容。
UIkit.sticky(element, options);
将在附加了此组件的元素上触发以下事件:
Name | Description |
---|---|
active |
开始粘附后触发 |
inactive |
不再粘附后触发 |