Создавайте сортируемые сетки и списки, чтобы изменять порядок в них.
Перетащите элемент в новое место в сортируемой сетке, в то время как другие элементы подгонятся под новый размер. Это нужно в случае, если вы хотите отсортировать такие элементы, как, например, галерея или пункты меню.
Drug and drop позволяет манипулировать элементами интерфейса, создавая подобие перемещения элементов в операционных системах. Так, например, реализован функционал перемещения аудиозаписей в социальных сетях.
Как использовать
Для начала работы с компонентом добавьте атрибут uk-sortable
к контейнеру и создайте дочерние элементы.
<div uk-sortable>
<div></div>
<div></div>
</div>
-
Элемент 1
-
Элемент 2
-
Элемент 3
-
Элемент 4
-
Элемент 5
-
Элемент 6
-
Элемент 7
-
Элемент 8
-
<ul class="uk-grid-small uk-child-width-1-2 uk-child-width-1-4@s uk-text-center" uk-sortable="handle: .uk-card" uk-grid> <li> <div class="uk-card uk-card-default uk-card-body">Item 1</div> </li> <li> <div class="uk-card uk-card-default uk-card-body">Item 2</div> </li> <li> <div class="uk-card uk-card-default uk-card-body">Item 3</div> </li> <li> <div class="uk-card uk-card-default uk-card-body">Item 4</div> </li> <li> <div class="uk-card uk-card-default uk-card-body">Item 5</div> </li> <li> <div class="uk-card uk-card-default uk-card-body">Item 6</div> </li> <li> <div class="uk-card uk-card-default uk-card-body">Item 7</div> </li> <li> <div class="uk-card uk-card-default uk-card-body">Item 8</div> </li> </ul>
Управление
По умолчанию перетаскивание срабатывает на всем сортируемом элементе. Чтобы выделить отдельную область (дескриптор), которая будет отвечать за перетаскивание, просто добавьте параметр handle: SELECTOR
к атрибуту и добавьте класс дескриптора к элементу, который вы хотите использовать в качестве активного.
<ul uk-sortable="handle: .uk-sortable-handle">
<li>
<div class="uk-sortable-handle"></div>
...
</li>
</ul>
-
Элемент 1
-
Элемент 2
-
Элемент 3
-
Элемент 4
-
Элемент 5
-
Элемент 6
-
Элемент 7
-
Элемент 8
-
<ul class="uk-grid-small uk-child-width-1-2 uk-child-width-1-4@s uk-text-center" uk-sortable="handle: .uk-sortable-handle" uk-grid> <li> <div class="uk-card uk-card-default uk-card-body"> <span class="uk-sortable-handle uk-margin-small-right" uk-icon="icon: table"></span>Item 1 </div> </li> <li> <div class="uk-card uk-card-default uk-card-body"> <span class="uk-sortable-handle uk-margin-small-right" uk-icon="icon: table"></span>Item 2 </div> </li> <li> <div class="uk-card uk-card-default uk-card-body"> <span class="uk-sortable-handle uk-margin-small-right" uk-icon="icon: table"></span>Item 3 </div> </li> <li> <div class="uk-card uk-card-default uk-card-body"> <span class="uk-sortable-handle uk-margin-small-right" uk-icon="icon: table"></span>Item 4 </div> </li> <li> <div class="uk-card uk-card-default uk-card-body"> <span class="uk-sortable-handle uk-margin-small-right" uk-icon="icon: table"></span>Item 5 </div> </li> <li> <div class="uk-card uk-card-default uk-card-body"> <span class="uk-sortable-handle uk-margin-small-right" uk-icon="icon: table"></span>Item 6 </div> </li> <li> <div class="uk-card uk-card-default uk-card-body"> <span class="uk-sortable-handle uk-margin-small-right" uk-icon="icon: table"></span>Item 7 </div> </li> <li> <div class="uk-card uk-card-default uk-card-body"> <span class="uk-sortable-handle uk-margin-small-right" uk-icon="icon: table"></span>Item 8 </div> </li> </ul>
Сортируемые группы
Чтобы иметь возможность перетаскивать элементы из одного списка в другой, можно их сгруппировать, добавив опцию group: GROUP-NAME
к атрибуту uk-sortable
в каждом списке.
<div uk-sortable="group: my-group">
<div></div>
</div>
<div uk-sortable="group: my-group">
<div></div>
</div>
Group 1
Элемент 1Элемент 2Элемент 3Элемент 4Group 2
Элемент 1Элемент 2Элемент 3Элемент 4Empty Group
<div class="uk-child-width-1-3@s" uk-grid> <div> <h4>Group 1</h4> <div uk-sortable="group: sortable-group"> <div class="uk-margin"> <div class="uk-card uk-card-default uk-card-body uk-card-small">Item 1</div> </div> <div class="uk-margin"> <div class="uk-card uk-card-default uk-card-body uk-card-small">Item 2</div> </div> <div class="uk-margin"> <div class="uk-card uk-card-default uk-card-body uk-card-small">Item 3</div> </div> <div class="uk-margin"> <div class="uk-card uk-card-default uk-card-body uk-card-small">Item 4</div> </div> </div> </div> <div> <h4>Group 2</h4> <div uk-sortable="group: sortable-group"> <div class="uk-margin"> <div class="uk-card uk-card-default uk-card-body uk-card-small">Item 1</div> </div> <div class="uk-margin"> <div class="uk-card uk-card-default uk-card-body uk-card-small">Item 2</div> </div> <div class="uk-margin"> <div class="uk-card uk-card-default uk-card-body uk-card-small">Item 3</div> </div> <div class="uk-margin"> <div class="uk-card uk-card-default uk-card-body uk-card-small">Item 4</div> </div> </div> </div> <div> <h4>Empty Group</h4> <div uk-sortable="group: sortable-group"> </div> </div>
Пользовательский класс
Вы также можете применить один или несколько пользовательских классов к элементам, когда они перетаскиваются. Для этого добавьте опцию cls-custom: MY-CLASS
в атрибут.
<ul uk-sortable="cls-custom: my-class">...</ul>
Внимание В этом примере мы используем навигацию из компонента Навигация. При перетаскивании элемента он получит тень и фон.
<ul class="uk-nav uk-nav-default uk-width-medium" uk-sortable="cls-custom: uk-box-shadow-small uk-flex uk-flex-middle uk-background"> <li class="uk-active"><a href="#">Active</a></li> <li><a href="#">Item</a></li> <li><a href="#">Item</a></li> <li><a href="#">Item</a></li> <li><a href="#">Item</a></li> </ul>
Опции компонента
Любой из этих параметров может быть применен к атрибуту компонента. Отделяйте параметры друг от друга точкой с запятой. Подробнее о параметрах
Опция | Значение | По умолчанию | Описание |
---|---|---|---|
group |
String | '' |
Группа |
animation |
Number | 150 |
Длительность анимации. |
threshold |
Number | 10 |
Порог перемещения мыши перед началом перетаскивания. |
cls-item |
String | uk-sortable-item |
Класс элемента. |
cls-placeholder |
String | uk-sortable-placeholder |
Класс плейсхолдера. |
cls-drag |
String | uk-sortable-drag |
Класс перетаскивателя. |
cls-drag-state |
String | uk-sortable-dragging |
Класс тела перетаскивателя. |
cls-base |
String | uk-sortable |
Класс списка. |
cls-no-drag |
String | uk-sortable-nodrag |
Отключить перетаскивание элементов с этим классом. |
cls-empty |
String | uk-sortable-empty |
Класс пустого списка. |
cls-custom |
String | '' |
Пользовательский класс перетаскивателя. |
handle |
String | false |
Селектор символа перетаскивателя. |
JavaScript
Подробнее о JavaScript компонентах.
Инициализация
UIkit.sortable(element, options);
События
Следующие события будут инициированы для элементов с этим компонентом:
Имя | Описание |
---|---|
start |
Срабатывает после начала перетаскивания. |
stop |
Срабатывает после окончания перетаскивания. |
moved |
Срабатывает после перемещения элемента. |
added |
Срабатывает после добавления элемента. |
removed |
Срабатывает после того, как элемент был удален. |