Определяет различные стили для выпадающих списков.
Как использовать компонент Dropdown в UIkit 3. Изучаем выпадающие элементы.
В UIkit 3 компонент Dropdown был разделен на две части: JS и оформление. JS часть переехала в компонент Drop.
Включать выпадающие списки может любой элемент, будь то ссылка или картинка. Добавьте атрибут uk-dropdown
к элементу блока после переключения. Мы на данном этапе не указываем никаких параметров, поэтому срабатывать Dropdown будет по клику на предыдущем элементе, т.е. кнопке.
<button type="button"></button>
<div uk-dropdown></div>
Вы можете отобразить выпадающий список, наведя курсор на кнопку или нажав на нее. Доступны 2 опции: клик и наведение.
Добавьте опцию mode: click
, чтобы включить активацию по клику. Используйте опцию mode: hover
, чтобы включить активацию в режиме наведения. По умолчанию работает на hover. Если вы хотите сгруппировать переключатель и и его раскрывающийся список, оберните оба элемента в
div
с классом .uk-inline
из компонента Утилиты.
<div class="uk-inline">
<button type="button"></button>
<div uk-dropdown="mode: click"></div>
</div>
- Идет бычок, качается, вздыхает на ходу: ох, доска кончается, сейчас я упаду!Идет бычок, качается, вздыхает на ходу: ох, доска кончается, сейчас я упаду!
<div class="uk-inline"> <button class="uk-button uk-button-default" type="button">Наведите</button> <div uk-dropdown>Идет бычок, качается, вздыхает на ходу: ох, доска кончается, сейчас я упаду!</div> </div> <div class="uk-inline"> <button class="uk-button uk-button-default" type="button">Кликните</button> <div uk-dropdown="mode: click">Идет бычок, качается, вздыхает на ходу: ох, доска кончается, сейчас я упаду!</div> </div>
Практика. Навигация в компоненте Dropdown
Выпадающий список часто используется для создания меню из компонента Навигация. Добавьте класс .uk-nav
и модификатор .uk-dropdown-nav
к элементу <ul>
.
<button type="button"></button>
<div uk-dropdown>
<ul class="uk-nav uk-dropdown-nav">...</ul>
</div>
-
- Активная ссылка
- Ссылка
- Заголовок
- Ссылка
- Ссылка
- Ссылка
<button class="uk-button uk-button-default" type="button">Наведение</button> <div uk-dropdown> <ul class="uk-nav uk-dropdown-nav"> <li class="uk-active"><a href="#">Активная ссылка</a></li> <li><a href="#">Ссылка</a></li> <li class="uk-nav-header">Заголовок</li> <li><a href="#">Ссылка</a></li> <li><a href="#">Ссылка</a></li> <li class="uk-nav-divider"></li> <li><a href="#">Ссылка</a></li> </ul> </div>
Сетки в компоненте Dropdown
В компоненте может быть все, что угодно. Рассмотрим вариант размещения сетки внутри.
Оберните ваш контент в <div>
и добавьте ему атрибут uk-grid
.
Для применения адаптивных свойств вложенной сетки добавьте класс .uk-dropdown-grid
.
<div class="uk-width-large" uk-dropdown>
<div class="uk-dropdown-grid uk-child-width-1-2@m" uk-grid>...</div>
</div>
Используйте один из классов из компонента Ширина для установки настроек внутри сетки.
-
- Активная ссылка
- Ссылка
- Заголовок
- Ссылка
- Ссылка
- Ссылка
- Активная ссылка
- Ссылка
- Заголовок
- Ссылка
- Ссылка
- Ссылка
<button class="uk-button uk-button-default" type="button">Наведите</button> <div class="uk-width-large" uk-dropdown> <div class="uk-dropdown-grid uk-child-width-1-2@m" uk-grid> <div> <ul class="uk-nav uk-dropdown-nav"> <li class="uk-active"><a href="#">Активная ссылка</a></li> <li><a href="#">Ссылка</a></li> <li class="uk-nav-header">Заголовок</li> <li><a href="#">Ссылка</a></li> <li><a href="#">Ссылка</a></li> <li class="uk-nav-divider"></li> <li><a href="#">Ссылка</a></li> </ul> </div> <div> <ul class="uk-nav uk-dropdown-nav"> <li class="uk-active"><a href="#">Активная ссылка</a></li> <li><a href="#">Ссылка</a></li> <li class="uk-nav-header">Заголовок</li> <li><a href="#">Ссылка</a></li> <li><a href="#">Ссылка</a></li> <li class="uk-nav-divider"></li> <li><a href="#">Ссылка</a></li> </ul> </div> </div> </div>
Позиционирование
Добавьте один из следующих параметров в атрибут uk-dropdown
для выравнивания.
<div uk-dropdown="pos: top-left"></div>
- Активная ссылка
- Ссылка
- Заголовок
- Ссылка
- Ссылка
- Ссылка
- Активная ссылка
- Ссылка
- Заголовок
- Ссылка
- Ссылка
- Ссылка
- Активная ссылка
- Ссылка
- Заголовок
- Ссылка
- Ссылка
- Ссылка
<div class="uk-inline"> <button class="uk-button uk-button-default" type="button">Top Right</button> <div uk-dropdown="pos: top-right"> <ul class="uk-nav uk-dropdown-nav"> <li class="uk-active"><a href="#">Активная ссылка</a></li> <li><a href="#">Ссылка</a></li> <li class="uk-nav-header">Заголовок</li> <li><a href="#">Ссылка</a></li> <li><a href="#">Ссылка</a></li> <li class="uk-nav-divider"></li> <li><a href="#">Ссылка</a></li> </ul> </div> </div> <div class="uk-inline"> <button class="uk-button uk-button-default" type="button">Bottom Justify</button> <div uk-dropdown="pos: bottom-justify"> <ul class="uk-nav uk-dropdown-nav"> <li class="uk-active"><a href="#">Активная ссылка</a></li> <li><a href="#">Ссылка</a></li> <li class="uk-nav-header">Заголовок</li> <li><a href="#">Ссылка</a></li> <li><a href="#">Ссылка</a></li> <li class="uk-nav-divider"></li> <li><a href="#">Ссылка</a></li> </ul> </div> </div> <div class="uk-inline"> <button class="uk-button uk-button-default" type="button">Right Center</button> <div uk-dropdown="pos: right-center"> <ul class="uk-nav uk-dropdown-nav"> <li class="uk-active"><a href="#">Активная ссылка</a></li> <li><a href="#">Ссылка</a></li> <li class="uk-nav-header">Заголовок</li> <li><a href="#">Ссылка</a></li> <li><a href="#">Ссылка</a></li> <li class="uk-nav-divider"></li> <li><a href="#">Ссылка</a></li> </ul> </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 |
Выравнивает выпадающий список справа снизу. |
Установка границы всплытия
По умолчанию выпадающий список переворачивается автоматически, когда не помещается в край области просмотра.
Если вы хотите переворачивать его в соответствии с границей контейнера, добавьте опцию boundary: .my-class
в атрибут uk-dropdown
,
используя селектор для контейнера. С помощью селектора вы сможете задать любой родительский элемент в качестве границы, относительно которой выпадающий список будет появляться.
<div class="my-class">
<button type="button"></button>
<div uk-dropdown="boundary: .my-class"></div>
</div>
- Активная ссылка
- Ссылка
- Заголовок
- Ссылка
- Ссылка
- Ссылка
- Активная ссылка
- Ссылка
- Заголовок
- Ссылка
- Ссылка
- Ссылка
<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-dropdown="boundary: .boundary"> <ul class="uk-nav uk-dropdown-nav"> <li class="uk-active"><a href="#">Активная ссылка</a></li> <li><a href="#">Ссылка</a></li> <li class="uk-nav-header">Заголовок</li> <li><a href="#">Ссылка</a></li> <li><a href="#">Ссылка</a></li> <li class="uk-nav-divider"></li> <li><a href="#">Ссылка</a></li> </ul> </div> <button class="uk-button uk-button-default uk-float-right" type="button">Наведите</button> <div uk-dropdown="boundary: .boundary"> <ul class="uk-nav uk-dropdown-nav"> <li class="uk-active"><a href="#">Активная ссылка</a></li> <li><a href="#">Ссылка</a></li> <li class="uk-nav-header">Заголовок</li> <li><a href="#">Ссылка</a></li> <li><a href="#">Ссылка</a></li> <li class="uk-nav-divider"></li> <li><a href="#">Ссылка</a></li> </ul> </div> </div>
Выравнивание относительно установленной границы
Вы можете выравнивать выпадающий список по его новой границе. Добавьте опцию boundary-align: true
в атрибут uk-dropdown
.
<div class="my-class">
<button type="button"></button>
<div uk-dropdown="boundary: .my-class; boundary-align: true"></div>
</div>
- Активная ссылка
- Ссылка
- Заголовок
- Ссылка
- Ссылка
- Ссылка
- Активная ссылка
- Ссылка
- Заголовок
- Ссылка
- Ссылка
- Ссылка
<div class="boundary-align uk-panel uk-placeholder"> <button class="uk-button uk-button-default uk-float-left" type="button">Justify</button> <div uk-dropdown="pos: bottom-justify; boundary: .boundary-align; boundary-align: true"> <ul class="uk-nav uk-dropdown-nav"> <li class="uk-active"><a href="#">Активная ссылка</a></li> <li><a href="#">Ссылка</a></li> <li class="uk-nav-header">Заголовок</li> <li><a href="#">Ссылка</a></li> <li><a href="#">Ссылка</a></li> <li class="uk-nav-divider"></li> <li><a href="#">Ссылка</a></li> </ul> </div> <button class="uk-button uk-button-default uk-float-right" type="button">Center</button> <div uk-dropdown="pos: bottom-center; boundary: .boundary-align; boundary-align: true"> <ul class="uk-nav uk-dropdown-nav"> <li class="uk-active"><a href="#">Активная ссылка</a></li> <li><a href="#">Ссылка</a></li> <li class="uk-nav-header">Заголовок</li> <li><a href="#">Ссылка</a></li> <li><a href="#">Ссылка</a></li> <li class="uk-nav-divider"></li> <li><a href="#">Ссылка</a></li> </ul> </div> </div>
Смещение выпадающего списка
Чтобы определить пользовательское смещение между выпадающим контейнером и переключателем, добавьте опцию offset
и значение в пикселях:
<div uk-dropdown="offset: 80"></div>
-
- Активная ссылка
- Ссылка
- Заголовок
- Ссылка
- Ссылка
- Ссылка
<button class="uk-button uk-button-default" type="button">Наведите</button> <div uk-dropdown="offset: 80"> <ul class="uk-nav uk-dropdown-nav"> <li class="uk-active"><a href="#">Активная ссылка</a></li> <li><a href="#">Ссылка</a></li> <li class="uk-nav-header">Заголовок</li> <li><a href="#">Ссылка</a></li> <li><a href="#">Ссылка</a></li> <li class="uk-nav-divider"></li> <li><a href="#">Ссылка</a></li> </ul> </div>
Анимация
Примените одну или несколько анимаций к раскрывающемуся списку, добавив опцию animation: uk-animation-*
вместе с классом из компонента Анимация.
Здесь же можно установить продолжительность анимации. Добавьте опцию duration
и ее значение:
<div uk-dropdown="animation: uk-animation-slide-top-small; duration: 500"></div>
-
- Активная ссылка
- Ссылка
- Заголовок
- Ссылка
- Ссылка
- Ссылка
<button class="uk-button uk-button-default" type="button">Наведите</button> <div uk-dropdown="animation: uk-animation-slide-top-small; duration: 1000"> <ul class="uk-nav uk-dropdown-nav"> <li class="uk-active"><a href="#">Активная ссылка</a></li> <li><a href="#">Ссылка</a></li> <li class="uk-nav-header">Заголовок</li> <li><a href="#">Ссылка</a></li> <li><a href="#">Ссылка</a></li> <li class="uk-nav-divider"></li> <li><a href="#">Ссылка</a></li> </ul> </div>
Все опции компонента
Любой из этих параметров может быть применен к атрибуту компонента. Разделяйте несколько вариантов точкой с запятой. Подробнее о JS компонентах
Опция | Значения | По умолчанию | Описание |
---|---|---|---|
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 |
Продолжительность анимации в миллисекундах. |
JavaScript
Подробнее о компонентах JavaScript.
Инициализация
UIkit.dropdown(element, options);
События
Для компонента доступные следующие события:
Name | Description |
---|---|
toggle |
Срабатывает до переключения. |
beforeshow |
Сробатывает до появления объекта. Может отменить показ, вернув false . |
show |
Срабатывает после появления объекта. |
shown |
Запускается после завершения анимации появления. |
beforehide |
Срабатывает до скрытия объекта. Может отменить скрытие, вернув false . |
hide |
Срабатывает после скрытия объекта. |
hidden |
Срабатывает после скрытия объекта. |
stack |
Срабатывает, когда класс drop-stack применен. |
Methods
Для компонента доступны следующие методы:
Show
UIkit.dropdown(element).show();
Отображает объект.
Hide
UIkit.dropdown(element).hide();
Скрывает объект.