JS компонент позволяет группировать любые элементы друг с другом в связке кнопка - выпадающий блок.
Как использовать компонент Drop в UIkit 3
Любой элемент, например кнопка, может работать в качестве переключателя. Добавьте атрибут uk-drop
к блоку, следующему после кнопки.
<button type="button"></button>
<div uk-drop></div>
Вы можете использовать 2 варианта активации раскрывающихся списков: режим наведения или клик. Добавьте параметр mode: click к атрибуту uk-drop
,
чтобы активировать нужный режим. Для группировки переключателя и раскрывающиегося списока оберните оба элемента в div
и добавьте к нему класс
.uk-inline
из компонента Утилиты.
<div class="uk-inline">
<button type="button"></button>
<div uk-drop="mode: click"></div>
</div>
Внимание Компонент Drop не имеет собственных стилей по умолчанию. В этом примере мы использовали компонент Карточки.
- Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt.Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt.
<div class="uk-inline"> <button class="uk-button uk-button-default" type="button">Наведите</button> <div uk-drop> <div class="uk-card uk-card-body uk-card-default">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt.</div> </div> </div> <div class="uk-inline"> <button class="uk-button uk-button-default" type="button">Кликните</button> <div uk-drop="mode: click"> <div class="uk-card uk-card-body uk-card-default">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt.</div> </div> </div>
Сетка внутри выпадающего блока
Вы можете поместить в выпадающий блок любую разметку из компонента Сетка.
Оберните содержимое в элемент <div>
и добавьте ему атрибут uk-grid
. Если сетка должна быть адаптивной, просто добавьте класс .uk-drop-grid
и необходимые классы адаптивности из компонента Ширина.
<div class="uk-width-large" uk-drop>
<div class="uk-drop-grid uk-child-width-1-2@m" uk-grid>...</div>
</div>
-
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt.Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt.
<button class="uk-button uk-button-default" type="button">Наведите</button> <div class="uk-width-large" uk-drop> <div class="uk-card uk-card-body uk-card-default"> <div class="uk-drop-grid uk-child-width-1-2@m" uk-grid> <div> Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt. </div> <div> Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt. </div> </div> </div> </div>
Позиция
Добавьте один из следующих параметров в атрибут uk-drop
атрибут для настройки выравнивания:
<div uk-drop="pos: top-left"></div>
- Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt.Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt.Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt.
<div class="uk-inline"> <button class="uk-button uk-button-default" type="button">Top Right</button> <div uk-drop="pos: top-right"> <div class="uk-card uk-card-body uk-card-default">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt.</div> </div> </div> <div class="uk-inline"> <button class="uk-button uk-button-default" type="button">Bottom Justify</button> <div uk-drop="pos: bottom-justify"> <div class="uk-card uk-card-body uk-card-default">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt.</div> </div> </div> <div class="uk-inline"> <button class="uk-button uk-button-default" type="button">Right Center</button> <div uk-drop="pos: right-center"> <div class="uk-card uk-card-body uk-card-default">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt.</div> </div> </div>
Позиция | Описание |
---|---|
bottom-left |
Выравнивает выпадающий блок слева внизу. |
bottom-center |
Выравнивает выпадающий блок внизу в центре. |
bottom-right |
Выравнивает выпадающий блок внизу справа. |
bottom-justify |
Выравнивает блок снизу и задает его ширину по связанному элементу. |
top-left |
Выравнивает выпадающий блок сверху слева. |
top-center |
Выравнивает выпадающий блок сверху в центре. |
top-right |
Выравнивает выпадающий блок сверху справа. |
top-justify |
Выравнивает блок сверху и задает его ширину по связанному элементу. |
left-top |
Выравнивает блок слева свверху. |
left-center |
Выравнивает блок по левому краю в центре. |
left-bottom |
Выравнивает блок по левому краю внизу. |
right-top |
Выравнивает блок по правому краю вверху. |
right-center |
Выравнивает блок по правому краю в центре. |
right-bottom |
Выравнивает блок по правому краю в центре. |
Граница привязки блока
По умолчанию компонент Drop переворачивается автоматически, когда не вмещается в край области просмотра.
Если вы хотите перевернуть его в соответствии с границей контейнера, просто добавьте boundary: .my-class
в атрибут uk-drop
, используя в качестве указателя границы селектор контейнера.
Таким образом, вы можете определить любой родительский элемент в качестве границы выпадения. Подход очень полезен для навигации, где используется мега-меню.
<div class="my-class">
<button type="button"></button>
<div uk-drop="boundary: .my-class"></div>
</div>
- Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt.Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt.
<div class="boundary uk-panel uk-placeholder uk-width-2-3@s"> <button class="uk-button uk-button-default uk-float-left" type="button">Наведите</button> <div uk-drop="boundary: .boundary"> <div class="uk-card uk-card-body uk-card-default">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt.</div> </div> <button class="uk-button uk-button-default uk-float-right" type="button">Наведите</button> <div uk-drop="boundary: .boundary"> <div class="uk-card uk-card-body uk-card-default">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt.</div> </div> </div>
Выравнивание относительно новой границы
Вы также можете выровнять блок по отношению к установленной границе. Добавьте в атрибут это: boundary-align: true
.
<div class="my-class">
<button type="button"></button>
<div uk-drop="boundary: .my-class; boundary-align: true"></div>
</div>
- Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt.Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt.
<div class="boundary-align uk-panel uk-placeholder"> <button class="uk-button uk-button-default uk-float-left" type="button">По ширине</button> <div uk-drop="pos: bottom-justify; boundary: .boundary-align; boundary-align: true"> <div class="uk-card uk-card-body uk-card-default">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt.</div> </div> <button class="uk-button uk-button-default uk-float-right" type="button">По центру</button> <div uk-drop="pos: bottom-center; boundary: .boundary-align; boundary-align: true"> <div class="uk-card uk-card-body uk-card-default">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt.</div> </div> </div>
Смещение
Чтобы установить пользовательское смещение выпадающего блока относительно кнопки, добавьте опцию offset
вместе со значением в пикселях:
<div uk-drop="offset: 80"></div>
-
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt.
<button class="uk-button uk-button-default" type="button">Наведите</button> <div uk-drop="offset: 80"> <div class="uk-card uk-card-body uk-card-default">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt.</div> </div>
Анимация
Примените одну или несколько анимаций к блоку, добавив класс семейства animation: uk-animation-*
в опции из компонента Анимация.
Здесь можно также определить продолжительность анимации. Добавьте опцию duration
вместе со значением. Не забывайте, что опции отделяются друг от друга точкой с запятой.
<div uk-drop="animation: uk-animation-slide-top-small; duration: 1000"></div>
-
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt.
<button class="uk-button uk-button-default" type="button">Наведите</button> <div uk-drop="animation: uk-animation-slide-top-small; duration: 1000"> <div class="uk-card uk-card-body uk-card-default">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt.</div> </div>
Все опции компонента Drop
Любой из этих параметров может быть применен к атрибуту компонента Drop. Разделяйте несколько вариантов точкой с запятой. Подробнее
Опция | Значение | По умолчанию | Описание |
---|---|---|---|
toggle |
String, Boolean | - * |
CSS селектор для элемента, который будет использоваться в качестве переключателя. По умолчанию используется предыдущий элемент. |
pos |
String | bottom-left |
Позиция выпадающего элемента. |
mode |
String | click, hover |
Разделенный запятыми список режимов поведения триггера: hover , click |
delay-show |
Number | 0 |
Время задержки в миллисекундах до отображения выпадашки в режиме наведения. |
delay-hide |
Number | 800 |
Время задержки в миллисекундах до того, как блок будет скрыт в режиме наведения. |
boundary |
String | window |
CSS-селектор элемента для поддержания видимости элемента. |
boundary-align |
Boolean | false |
Выравнивание выпадашки относительно границы. |
flip |
Boolean, String | true |
Автоматический переворот выпадашки. Возможные значения false , true , x или y . |
offset |
Number | 0 |
Смещение выпадашки. |
animation |
String | false |
Разделенные пробелами названия анимаций. |
duration |
Number | 200 |
Задержка анимации в миллисекундах. |
pos
можно не указывать, если это единственный параметр в значении атрибута.
<span uk-drop="top-left"></span>
JavaScript
Подробнее о компонентах JavaScript.
Инициализация
UIkit.drop(element, options);
События
Следующие события будут инициированы для элемента:
Название | Описание |
---|---|
toggle |
Срабатывает до переключения. |
beforeshow |
Срабатывает до отображения объекта. Может отменить отображение, вернув false . |
show |
Срабатывает после отображения объекта. |
shown |
Запускается после завершения анимации объекта. |
beforehide |
Срабатывает до скрытия объекта. Может отменить скрытие, вернув false . |
hide |
Срабатывает после скрытия объекта. |
hidden |
Срабатывает после скрытия объекта. |
stack |
Срабатывает, когда применяется класс drop-stack . |
Методы
Для компонента доступны следующие методы:
Show
UIkit.drop(element).show();
Отображает выпадашку.
Hide
UIkit.drop(element).hide();
Скрывает выпадашку.