可嵌套

创建可通过拖放排序的可嵌套列表。

可嵌套组件允许您通过拖放来排序项目。如果您想在管理区域中组织不同的类别或菜单项,这将非常有用。


用法

一个可嵌套列表由列表本身、列表项和可嵌套面板组成。

类/数据属性 描述
.uk-nestable 将此类添加到 <ul> 元素以定义该组件。
.uk-nestable-item 将此class添加到每个 <li> 元素,表示列表项。
.uk-nestable-panel 将此类添加到 <li> 元素内的 <div> 元素以设置项目样式。

注意要启用必要的 JavaScript,只需添加 data-uk-nestable 属性。

示例

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

标记

<ul class="uk-nestable" data-uk-nestable>
    <li class="uk-nestable-item">
        <div class="uk-nestable-panel"> ... </div>
    </li>
</ul>

可嵌套句柄

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

示例

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

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

标记

<ul class="uk-nestable" data-uk-nestable="{handleClass:'uk-nestable-handle'}">
    <li class="uk-nestable-item">
        <div class="uk-nestable-panel">
            <div class="uk-nestable-handle"></div>
            ...
        </div>
    </li>
</ul>

可嵌套切换

默认情况下,整个可嵌套元素可以用于拖放排序。要创建一个句柄来代替,只需将 .uk-nestable-toggle 类和 data-nestable-action="toggle" 属性添加到可嵌套面板内的 <div> 元素。

示例

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

标记

<ul class="uk-nestable" data-uk-nestable">
    <li class="uk-nestable-item">
        <div class="uk-nestable-panel">
            <div class="uk-nestable-toggle" data-nestable-action="toggle"></div>
            ...
        </div>
    </li>
</ul>

多个列表

要能够将项目从一个列表排序到另一个列表,您可以通过将 data-uk-nestable="{group:'GROUP-NAME'}" 属性添加到每个列表来对它们进行分组。

示例

第一个列表

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

第二个列表

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

标记

<ul class="uk-nestable" data-uk-nestable="{group:'my-group'}">...</ul>
<ul class="uk-nestable" data-uk-nestable="{group:'my-group'}">...</ul>

禁用嵌套

要禁用列表项的嵌套,只需添加 data-uk-nestable="{maxDepth:1}" 属性。您也可以使用此数据属性来确定可能嵌套的深度。

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

标记

<ul class="uk-nestable" data-uk-nestable="{maxDepth:1}">...</ul>

JavaScript 选项

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

data-uk-nestable="{maxDepth:0, group:'widgets'}"
选项 可能的值 默认值 描述
group string false 列表组
maxDepth integer 10 最大嵌套级别
threshold integer 20 开始拖动之前的像素阈值
listNodeName string ul 列表节点名称
itemNodeName string li 项目节点名称
listBaseClass string uk-nestable 列表基本类
listClass string uk-nestable-list 列表类
listitemClass string uk-nestable-list-item 列表项类
itemClass string uk-nestable-item 项目类
dragClass string uk-nestable-list-dragged 添加到拖动列表的类
movingClass string uk-nestable-moving 移动时添加到 <html> 的类
handleClass string uk-nestable-handle 拖动手柄的类
collapsedClass string uk-nestable-collapsed 折叠项目的类
placeClass string uk-nestable-placeholder 当前拖动元素的占位符的类
noDragClass string uk-nestable-nodrag 具有此类的元素不会触发拖动。当整个项目可拖动而不仅仅是句柄时非常有用。
noChildrenClass string uk-nestable-nochildren 具有此类的元素将不允许子元素。对于底层项目很有用。
emptyClass string uk-nestable-empty 空列表的类

手动初始化元素

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

事件

名称 参数 描述
start.uk.nestable event, 可嵌套对象 在可嵌套拖动开始时
move.uk.nestable event, 可嵌套对象 在可嵌套移动项目时
stop.uk.nestable event, 可嵌套对象 在可嵌套停止拖动时
change.uk.nestable event, 可排序对象, 拖动元素, 操作 在可嵌套更改项目时