可嵌套
创建可通过拖放排序的可嵌套列表。
可嵌套组件允许您通过拖放来排序项目。如果您想在管理区域中组织不同的类别或菜单项,这将非常有用。
用法
一个可嵌套列表由列表本身、列表项和可嵌套面板组成。
类/数据属性 | 描述 |
---|---|
.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, 可排序对象, 拖动元素, 操作 | 在可嵌套更改项目时 |