可排序

创建可排序的网格和列表,以重新排列其元素的顺序。

将一个元素拖放到可排序网格中的新位置,而其他项目会调整以适应。 如果要对图库或菜单项之类的项目进行排序,这将非常有用。


用法

要应用此组件,请将 .uk-sortable 类添加到容器,并创建子元素来定义组件。 要启用必要的 JavaScript,只需添加 data-uk-sortable 属性即可。

示例

在此示例中,我们使用了网格组件中的网格来排列可排序的项目。

  • 项目 1
  • 项目 2
  • 项目 3
  • 项目 4
  • 项目 5
  • 项目 6
  • 项目 7
  • 项目 8
  • 项目 9
  • 项目 10

标记

<ul class="uk-sortable" data-uk-sortable>
    <li>...</li>
    <li>...</li>
</ul>

对任何元素进行排序

可排序组件不限于 <ul> 元素。 您可以使用任何块元素作为容器。

标记

<div class="uk-sortable" data-uk-sortable>
    <div>...</div>
    <div>...</div>
</div>

可排序句柄

默认情况下,整个可排序元素都可以用于拖放排序。 要创建一个句柄来代替,只需将 {handleClass:'uk-sortable-handle'} 选项添加到 data 属性,并将句柄类添加到您要用作句柄的元素即可。

示例

  • 项目 1
  • 项目 2
  • 项目 3
  • 项目 4
  • 项目 5
  • 项目 6
  • 项目 7
  • 项目 8
  • 项目 9
  • 项目 10

注意 在此示例中,我们使用了图标组件中的 .uk-icon-bars 类来设置句柄的样式。

标记

<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'}" 属性添加到每个列表来对它们进行分组。

示例

第一个列表

项目 1
项目 2
项目 3
项目 4

第二个列表

项目 1
项目 2
项目 3
项目 4

标记

<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 字符串 false 列表组
animation 整数 150 动画速度(以毫秒为单位)
threshold 整数 10 鼠标移动阈值(以像素为单位),直到触发元素拖动
handleClass 字符串 '' 用于定义可以触发排序的元素的自定义类
dragCustomClass 字符串 '' 添加到拖动元素的自定义类

手动初始化元素

var sortable = UIkit.sortable(element, { /* options */ });

事件

名称 参数 描述
start.uk.sortable 事件、可排序对象、拖动的元素、幽灵元素 在可排序拖动开始时
move.uk.sortable 事件、可排序对象 在可排序项目移动时
stop.uk.sortable 事件、可排序对象、拖动的元素 在可排序停止拖动时
change.uk.sortable 事件、可排序对象、拖动的元素、动作 在可排序项目更改时