# 附着/Sticky
让页面元素保持在视口顶部,比如跟随滚动的导航栏。
## 用法
创建一个能在页面滚动时能保持在视口顶部的页面元素,添加 `data-uk-sticky` 属性到该元素即可。注意 使用此组件需要额外添加 `sticky.css` 文件,在`css/components`文件夹中。此组件需要额外添加 `sticky.js` 文件,在`js/components`文件夹中。
### Example
![](https://box.kancloud.cn/2016-05-12_57346f4174f02.jpg)
### Markup
```
<div data-uk-sticky>...</div>
```
* * *
## 赋予偏移量
还可以定位元素处于视口边缘下的位置。比如,添加 `data-uk-sticky="{top:100}"` 属性创建100px的margin。
### Example
![](https://box.kancloud.cn/2016-05-12_57346f41867d9.jpg)
### Markup
```
<div data-uk-sticky="{top:100}">...</div>
```
* * *
## 添加延迟
为元素添加延迟,这样使它能在页面滚动特定距离后才变成粘连状态,你需要添加一个负偏移值到data属性,比如 `data-uk-sticky="{top:-200}"`。还可以添加[动画](animation.html)让元素可以平滑地再次出现。
### Example
![](https://box.kancloud.cn/2016-05-12_57346f41ad732.jpg)
### Markup
```
<div data-uk-sticky="{top:-200, animation: 'uk-animation-slide-top'}">...</div>
```
* * *
## 响应式行为
还可以通过在data属性中添加断点选项,来实现在不同设备上禁用粘连行为,比如 `data-uk-sticky="{media: 640}"` 。另外,还可以使用媒体查询来控制。
### Markup
```
<!-- This is basically a shortcode to define a min-width -->
<div data-uk-sticky="{media: 640}">...</div>
<!-- This is a media string using the min-width and orientation properties -->
<div data-uk-sticky="{media: '(min-width: 640px) and (orientation: landscape)'}>...</div>
```
* * *
## 附着的边界
可以通过设置 boundary 参数定义元素附着行为的边界,使其只在该范围内跟随滚动。
### Example
![](https://box.kancloud.cn/2016-05-12_57346f41bd1ff.jpg)
### Markup
```
<!-- Bind sticky to its parent element -->
<div data-uk-sticky="{boundary: true}">...</div>
<!-- Bind sticky to any element -->
<div data-uk-sticky="{boundary: '#my-id'}">...</div>
```
* * *
## JavaScript 选项
| 选项 | 可用值 | 默认值 | 描述 |
| --- | --- | --- | --- |
| `top` | integer | 0 | 触发附着行为的顶部偏移量 |
| `animation` | string | '' | UIkit 的动画 class |
| `clsinit` | string | uk-sticky-init | 元素首次附着时进行初始化的class |
| `clsactive` | string | uk-active | 元素附着时添加的 class |
| `clsinactive` | string | '' | 元素未附着时添加的 class |
| `getWidthFrom` | string | '' | 粘连模式下获取宽度的CSS选择器。默认情况下它从已创建的外层元素获取宽度值。 |
| `media` | integer / string | false | 激活状态所需的整型宽度条件,或CSS媒体查询 |
| `target` | boolean | false | 确保粘连元素不会在DOM就绪后通过位置散列(location hash)越过目标元素。 |
| `showup` | boolean | false | 是否仅在滚动时显示附着的元素 |
| `boundary` | mixed | false | 设置为 `true` 将粘连绑定到父元素或使用CSS选择器将粘连绑定到特定元素。 |
### 手动初始化元素
```
var sticky = UIkit.sticky(element, { /* options */ });
```
### 事件
| 名称 | 参数 | 描述 |
| --- | --- | --- |
| `active.uk.sticky` | event | 获得附着效果 |
| `inactive.uk.sticky` | event | 脱离附着状态 |
- UIkit 中文文档
- 开始使用
- 初学者
- 开始使用
- 如何自定义
- 布局示例
- 开发者
- 项目结构
- Less & Sass 文件
- 创建主题
- 创建样式
- Customizer.json
- JavaScript
- 自定义前缀
- 核心组件
- 默认
- 基础
- 打印
- 布局类组件
- 网格
- 面板/Panel
- 块/Block
- 文章
- 评论/Comment
- 效果/Utility
- Flex 布局
- 覆盖/Cover
- 导航类组件
- 导航菜单
- 导航栏
- 二级导航
- 面包屑/Breadcrumb
- 分页
- 选项卡
- 缩略图导航/Thumbnav
- 页面元素
- 列表
- 描述列表
- 表格
- 表单
- 常用组件
- 按钮
- 图标
- 关闭/Close
- 徽章/Badge
- 提示框
- 缩略图/Thumbnail
- 遮罩/Overlay
- 文本
- 列
- 动画
- 对比度/Contrast
- JAVASCRIPT组件
- 下拉菜单
- 模态对话框
- 抽屉/Off-canvas
- 切换器/Switcher
- 拨动/toggle
- 滚动监听/Scrollspy
- 平滑滚动
- 附加组件
- 布局类组件
- 动态网格
- 视差网格
- 导航类组件
- 圆点导航
- 滑动导航/Slidenav
- 动态分页
- 常用组件
- 高级表单
- 文件表单/Form file
- 密码表单
- 选择表单
- 占位符
- 进度条/Progress
- JAVASCRIPT组件
- 灯箱/Lightbox
- 自动完成/Autocomplete
- 日期选择器/Datepicker
- HTML 编辑器
- 滚动条/Slider
- 滑块集/Slideset
- 幻灯片/Slideshow
- 视差/Parallax
- 手风琴/Accordion
- 通知/Notify
- 搜索/Search
- 可嵌套/Nestable
- 可排序/Sortable
- 附着/Sticky
- 时间选择器
- 工具提示/Tooltip
- 上传