Скрывайте, переключайте классы и изменяйте внешний вид чего угодно с помощью универсального переключателя.
Как использовать компонент Toggle в UIkit 3
Метод Toggle крайне популярен в Java Script, в честь него разработчики UIkit назвали свой компонент. По сравнению с предыдущими версиями, в UIkit 3 возможности компонента значительно расширились.
Чтобы применить Toggle, просто добавьте атрибут uk-toggle="target: #ID"
к <button>
или <a>
. Можно использовать любой селектор с атрибутом переключения.
Переключатель можно использовать для добавления или удаления класса или атрибута из элемента. По умолчанию toggle переключает атрибут hidden
для скрытия элементов.
<button uk-toggle="target: #my-id" type="button"></button>
<p id="my-id"></p>
Что тут у нас?
<div> <button class="uk-button uk-button-default" type="button" uk-toggle="target: #toggle-usage">Toggle</button> <p id="toggle-usage">Что тут у нас?</p> </div>
Множественное переключение
С помощью компонента Toggle вы также можете переключать несколько элементов одновременно.
Добавьте опцию target: SELECTOR
к атрибуту uk-toggle
и используйте селектор, который применяется ко всем элементам.
<button type="button" uk-toggle="target: .my-class"></button>
<p class="my-class"></p>
<p class="my-class"></p>
-
Hello!
Bazinga!
<button class="uk-button uk-button-default" type="button" uk-toggle="target: .toggle">Toggle</button> <p class="toggle">Hello!</p> <p class="toggle" hidden>Bazinga!</p>
Внимание В этом примере мы добавили атрибут hidden
к одному из элементов, так что будет показан только один элемент. Переключатель изменит видимые состояния между обоими элементами.
Пользовательский класс для переключения
Если вы не хотите использовать hidden
, добавьте свой класс.
Задайте опцию cls: CLASS
для атрибута uk-toggle
. В следующем примере мы используем класс .uk-card-primary
для переключения стиля карточки.
<button type="button" uk-toggle="target: #my-id; cls: uk-card-primary"></button>
<p id="my-id" class="uk-card uk-card-default"></p>
-
Пользовательский класс
<button class="uk-button uk-button-default" type="button" uk-toggle="target: #toggle-custom; cls: uk-card-primary">Toggle</button> <div id="toggle-custom" class="uk-card uk-card-default uk-card-body uk-margin-small">Пользовательский класс</div>
Анимации
Компонент Toggle позволяет добавлять анимацию к элементам при переключении.
Добавьте в опцию класс семейства .uk-animation-*
из компонента Анимация.
Можно задать разные классы для появления и исчезновения элементов. Если вы предпочитаете другую анимацию, используйте нужный другой класс.
<button type="button" uk-toggle="target: #my-id; animation: uk-animation-fade"></button>
<p id="my-id"></p>
-
Анимация
<button href="#toggle-animation" class="uk-button uk-button-default" type="button" uk-toggle="target: #toggle-animation; animation: uk-animation-fade">Toggle</button> <div id="toggle-animation" class="uk-card uk-card-default uk-card-body uk-margin-small">Анимация</div>
Множественые анимации
Вы также можете применить несколько анимаций из компонента Анимации.
<button type="button" uk-toggle="target: #my-id; animation: uk-animation-slide-left, uk-animation-slide-bottom"></button>
<p id="my-id"></p>
-
Анимация
<button class="uk-button uk-button-default" type="button" uk-toggle="target: #toggle-animation-multiple; animation: uk-animation-slide-left, uk-animation-slide-bottom">Toggle</button> <div id="toggle-animation-multiple" class="uk-card uk-card-default uk-card-body uk-margin-small">Анимация</div>
Очередность анимациии
При переключении нескольких элементов с анимацией, вы можете дождаться окончания первой анимации, а затем анимировать второй элемент. Для этого просто добавьте параметр queued: true
в атрибутuk-toggle
.
<button type="button" uk-toggle="target: .my-class; animation: uk-animation-fade; queued: true"></button>
<p class="my-class"></p>
<p class="my-class"></p>
-
Первая анимация
Вторая анимация
<button class="uk-button uk-button-default" type="button" uk-toggle="target: .toggle-animation-queued; animation: uk-animation-fade; queued: true; duration: 300">Toggle</button> <p class="toggle-animation-queued uk-card uk-card-default uk-card-body uk-margin-small">Первая анимация</p> <p class="toggle-animation-queued uk-card uk-card-primary uk-card-body uk-margin-small" hidden>Вторая анимация</p>
Режимы
Переключение может быть вызвано различными способами.
Добавьте опцию mode
к атрибуту uk-toggle
и примените одно из перечисленных значений:
Значение | Описание |
---|---|
hover |
Срабатывает при наведении |
click |
Срабатывает по клику. Значение по умолчанию. |
click, hover |
Будет срабатывать и по клику, и при наведении курсора. |
media |
Поведение переключателя зависит от ширины области просмотра. Подробнее об этом читайте ниже. |
<button type="button" uk-toggle="target: #my-id; mode: hover"></button>
<p id="my-id"></p>
-
Что тут у нас?
<button class="uk-button uk-button-default" type="button" uk-toggle="target: #toggle-hover; mode: hover">hover</button> <p id="toggle-hover">Что тут у нас?</p>
Режимы Toggle в зависимости от разрешения экрана
Toggle обзавелся отличной возможностью: изменение типа активации для различных устройств. Например, на ПК элемент будет срабатывать при наведении, а на мобильных устройствах — по клику.
При использовании режима media
также необходимо добавить валидное значение, относящееся к контрольным точкам от @s
до @xl
.
Без опциии target
, ваша кнопка будет переключать состояния на себе.
Таким образом, он будет переключаться между различными состояниями, которые определены в опции cls
,
в зависимости от ширины области просмотра, в которой он отображается.
<!-- Основной модификатор будет применяться только на больших экранах -->
<div class="uk-card uk-card-default" uk-toggle="cls: uk-card-primary; mode: media; media: @l"></div>
- Работает на больших экранах
<div class="uk-card uk-card-default uk-card-body uk-width-medium" uk-toggle="cls: uk-card-primary; mode: media; media: @l"> Работает на больших экранах </div>
Внимание Начальное состояние переключения зависит от опции cls
. Это либо первый заданный класс в списке, разделенном пробелами, либо, если он установлен в значение false
для атрибута hidden
.
Если задано более одного класса, другие классы просто переключаются при изменении состояния.
Опции компонента
Все перечисленные опции могут быть применены к компоненту. Отделяйте опции друг от друга точкой с запятой. Подробнее о конфигурировании
Опция | Значение | По умолчанию | Описание |
---|---|---|---|
target |
String | false |
CSS селектор элемента, класс которого будет переключаться. |
mode |
String | click |
Разделенный запятыми список режимов поведения триггера. (hover , click , media ) |
cls |
String | false |
Класс, который переключается. По умолчанию это атрибут hidden . |
media |
Integer, String | false |
Адаптивный режим, контрольная точка в виде целого числа, например, 640 или стандартный брекпойнт (например, @s, @m, @l, @xl). Также подойдет любой другой валидный медиа-запрос. |
animation |
String | false |
Разделенные пробелами имена анимаций, разделяются запятыми. |
duration |
Number | 200 |
Продолжительность анимации в миллисекундах. |
queued |
Boolean | true |
Переключения анимации после завершения предыдущей анимации. |
target
— Основная опция, и ее ключ может быть опущен, если это единственный параметр в значении атрибута.
<span uk-toggle=".my-class"></span>
JavaScript
Подробнее о JavaScript компонентах UIkit.
Инициализация
UIkit.toggle(element, options);
События
Для компонента доступны следующие события:
Имя | Описание |
---|---|
beforeshow |
Срабатывает появления объекта. Может отметить отображение, вернув false . |
show |
Срабатывает после появления объекта. |
shown |
Срабатывает после завершения анимации появления объекта. |
beforehide |
Срабатывает до скрытия объекта. Может отменить скрытие, вернув false . |
hide |
Срабатывает после запуска анимации скрытия элемента. |
hidden |
Срабатывает после скрытия объекта. |
Методы
Для компонента доступны следующие методы:
Toggle
UIkit.toggle(element).toggle();
Переключает состояние выбранного элемента.