# 可排序/Sortable
创建可排序的网格和列表重新来排列元素的顺序。
拖拽元素到另一个可排序的网格中的某处,该网格中其它条目会自动适应排列顺序。这将会在诸如排列画廊条目或者菜单条目时显得尤为有用。
* * *
## 用法
要使用这个组件,需要在容器中添加 `.uk-sortable` 类,然后创建子元素来定义这个组件。为了使必要的JavaScript生效,还需要添加 `data-uk-sortable` 属性。注意 使用此组件需要额外添加 `sortable.css` 文件,在`css/components`文件夹中。此组件需要额外添加 `sortable.js` 文件,在`js/components`文件夹中。
### Example
在这里的例子中,我们使用到了 [网格组件](grid.html)来放置可排序的条目。
![](https://box.kancloud.cn/2016-05-12_57346f413beb3.jpg)
### Markup
```
<ul class="uk-sortable" data-uk-sortable>
<li>...</li>
<li>...</li>
</ul>
```
* * *
### 任意元素的排序
可排序组件并不限制只能用于 `<ul>` 元素。你可以使用任意块元素作为容器。
#### Markup
```
<div class="uk-sortable" data-uk-sortable>
<div>...</div>
<div>...</div>
</div>
```
* * *
## 可排序手柄
默认地,整个可排序元素都可以拖拽进行排序。为了创建一个操作手柄,只需为希望作为手柄的元素添加 `{handleClass:'uk-sortable-handle'}` 选项到 data 属性,并添加手柄的class 类名。
### Example
![](https://box.kancloud.cn/2016-05-12_57346f414c91a.jpg)
NOTE 在这个例子中,使用了 [图标组件](icon.html) 中的 `.uk-icon-bars` 类名来设定手柄的样式。
### Markup
```
<ul class="uk-sortable" data-uk-sortable="{handleClass:'uk-sortable-handle'}">
<li><div class="uk-sortable-handle"></div>...</li>
</ul>
```
* * *
## 多个列表之间的排序
为了是跨列表的拖拽排序成为可能,你需要为每个列表添加 `data-uk-sortable="{group:'GROUP-NAME'}"` 属性,将它们归为一组。
### Example
![](https://box.kancloud.cn/2016-05-12_57346f415e8a5.jpg)
### Markup
```
<ul class="uk-sortable" data-uk-sortable="{group:'my-group'}">...</ul>
<ul class="uk-sortable" data-uk-sortable="{group:'my-group'}">...</ul>
```
* * *
## JavaScript 选项
这是一个关于如何通过data属性设置选项的例子:
```
data-uk-sortable="{animation:0, dragCustomClass:'dragging'}"
```
| 选项 | 可用值 | 默认值 | 描述 |
| --- | --- | --- | --- |
| `group` | string | false | 列表的组 |
| `animation` | integer | 150 | 毫秒计时的动画 |
| `threshold` | integer | 10 | 触发元素拖拽的鼠标移动像素距离的阈值 |
| `handleClass` | string | '' | 自定义类名,用于定义哪些元素可以触发排序 |
| `dragCustomClass` | string | '' | 添加到被拖拽元素中的自定义类 |
### 手动地初始化元素
```
var sortable = UIkit.sortable(element, { /* options */ });
```
### Events
| Name | Parameter | Description |
| --- | --- | --- |
| `start.uk.sortable` | event, sortable object, dragged element | 可排序拖拽开始时触发 |
| `move.uk.sortable` | event, sortable object | 移动可排序条目时触发 |
| `stop.uk.sortable` | event, sortable object, dragged element | 拖拽终止时触发 |
| `change.uk.sortable` | event, sortable object, dragged element, action | 改变可排序条目时触发 |
- 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
- 上传