Компонент Модальное окно
Шикарный компонент для создания модальных диалоговых окон с разными стилями и переходами. Модификаторы. Руководство.
Модальный компонент состоит из перекрытия (overlay), диалогового окна и необязательной кнопки закрытия. Вы можете использовать любой элемент для переключения модального окна.
Modal: Руководство
Modal
Чтобы включить необходимый JavaScript, добавьте атрибут uk-toggle
. Элемент <a>
должен быть связан с модальным идентификатором (id).
Если вы используете другой элемент, например кнопку, просто добавьте атрибут uk-toggle="target: #ID"
,
чтобы указать в нём идентификатор модального контейнера.
<!-- Это кнопка для открытия модального окна -->
<button type="button" uk-toggle="target: #modal-id">Кнопка</button>
<!-- Это ссылка-якорь для открытия модального окна -->
<a href="#modal-id" uk-toggle>Ссылка</a>
Добавьте к элементу <div>
атрибут uk-modal
, чтобы создать модальный контейнер и наложение (перекрытие, overlay), которое затемняет страницу. Важно добавить id
, чтобы указать цель для переключения. Обратите внимание на следующие классы и используйте их при создании модальных окон.
Класс | Описание |
---|---|
.uk-modal-dialog |
Добавьте этот класс в дочерний элемент <div> для создания диалогового окна. |
.uk-modal-body |
Добавьте этот класс для создания внутренних отступов между модальным окном и его содержимым. |
.uk-modal-title |
Добавьте этот класс к элементу заголовка, чтобы создать модальный заголовок. |
.uk-modal-close |
Добавьте этот класс к элементу <a> или <button> , чтобы создать кнопку закрытия и включить ее функциональность. По умолчанию не имеет стилей. |
<!-- Это кнопка для переключения модального окна -->
<button uk-toggle="target: #my-id" type="button"></button>
<!-- Это модальное окно -->
<div id="my-id" uk-modal>
<div class="uk-modal-dialog uk-modal-body">
<h2 class="uk-modal-title">Модальный заголовок</h2>
<button class="uk-modal-close" type="button">Закрыть</button>
</div>
</div>
Кнопка закрытия
Чтобы создать кнопку закрытия и включить ее функциональность, а также добавить соответствующие стили и расположение, добавьте класс .uk-modal-close-default
к элементу <a>
или <button>
.
Чтобы разместить кнопку закрытия за пределами модального окна, добавьте класс .uk-modal-close-outside
.
Добавьте атрибут uk-close
из компонента Значок закрытия, чтобы применить иконочный значок закрытия.
<div id="my-id">
<div class="uk-modal-dialog">
<button class="uk-modal-close-default" type="button" uk-close></button>
</div>
</div>
<div id="my-id">
<div class="uk-modal-dialog">
<button class="uk-modal-close-outside" type="button" uk-close></button>
</div>
</div>
По умолчанию
Душа моя озарена неземной радостью, как эти чудесные весенние утра, которыми я наслаждаюсь от всего сердца. Я совсем один и блаженствую в здешнем краю, словно созданном для таких, как я. Я так счастлив, мой друг, так упоен ощущением покоя, что искусство мое страдает от этого. Ни одного штриха не мог бы я сделать, а никогда не был таким большим художником, как в эти минуты.
Outside
Как бы выразить, как бы вдохнуть в рисунок то, что так полно, так трепетно живет во мне, запечатлеть отражение моей души!
Когда от милой моей долины поднимается пар и полдневное солнце стоит над непроницаемой чащей темного леса и лишь редкий луч проскальзывает в его святая святых, а я лежу в высокой траве у быстрого ручья и, прильнув к земле, вижу тысячи всевозможных былинок и чувствую.
Как близок моему сердцу крошечный мирок, что снует между стебельками, наблюдаю эти неисчислимые, непостижимые разновидности.
<!-- Это кнопка переключения модального окна с кнопкой закрытия по умолчанию -->
<button class="uk-button uk-button-primary uk-margin-small-right" type="button" uk-toggle="target: #modal-close-default">По умолчанию</button>
<div id="modal-close-default" uk-modal>
<div class="uk-modal-dialog uk-modal-body">
<button class="uk-modal-close-default" type="button" uk-close></button>
<h2 class="uk-modal-title">По умолчанию</h2>
<p>Душа моя озарена неземной радостью, как эти чудесные весенние утра, которыми я наслаждаюсь от всего сердца. Я совсем один и блаженствую в здешнем краю, словно созданном для таких, как я. Я так счастлив, мой друг, так упоен ощущением покоя, что искусство мое страдает от этого. Ни одного штриха не мог бы я сделать, а никогда не был таким большим художником, как в эти минуты.</p>
</div>
</div>
<!-- Это кнопка переключения модального окна с внешней кнопкой закрытия -->
<button class="uk-button uk-button-primary uk-margin-small-right" type="button" uk-toggle="target: #modal-close-outside">За пределами</button>
<!-- Это модальное окно с внешней кнопкой закрытия. -->
<div id="modal-close-outside" uk-modal>
<div class="uk-modal-dialog uk-modal-body">
<button class="uk-modal-close-outside" type="button" uk-close></button>
<h2 class="uk-modal-title">Outside</h2>
<p>Как бы выразить, как бы вдохнуть в рисунок то, что так полно, так трепетно живет во мне, запечатлеть отражение моей души!</p>
<p>Когда от милой моей долины поднимается пар и полдневное солнце стоит над непроницаемой чащей темного леса и лишь редкий луч проскальзывает в его святая святых, а я лежу в высокой траве у быстрого ручья и, прильнув к земле, вижу тысячи всевозможных былинок и чувствую.</p>
<p>Как близок моему сердцу крошечный мирок, что снует между стебельками, наблюдаю эти неисчислимые, непостижимые разновидности.</p>
</div>
</div>
Ценрирование
Модальное окно в режиме «Center»
Для вертикального центрирования модального окна вы можете использовать класс .uk-margin-auto-vertical
из компонента Margin.
<div id="my-id" class="uk-flex-top" uk-modal>
<div class="uk-modal-dialog uk-margin-auto-vertical"></div>
</div>
.uk-flex-top
.
Любоваться, но все-таки не любить. Но довольно об этом. Мне надо было лишь поставить тебя на мою точку. Но вот, однако, одна меня сильно заинтересовавшая картинка. И уж конечно, так делая, никто из них не задумывался и не раскаивался, напротив, считал себя в полном праве.
Хорошо дома! Сидишь перед монитором, лохматая, в пижаме, а все думают - красавица, как на аватарке.
<a class="uk-button uk-button-default" href="#modal-center" uk-toggle>Открыть</a>
<div id="modal-center" class="uk-flex-top" uk-modal>
<div class="uk-modal-dialog uk-modal-body uk-margin-auto-vertical">
<button class="uk-modal-close-default" type="button" uk-close></button>
<p>Любоваться, но все-таки не любить. Но довольно об этом. Мне надо было лишь поставить тебя на мою точку. Но вот, однако, одна меня сильно заинтересовавшая картинка. И уж конечно, так делая, никто из них не задумывался и не раскаивался, напротив, считал себя в полном праве.</p>
<p>Хорошо дома! Сидишь перед монитором, лохматая, в пижаме, а все думают - красавица, как на аватарке. </p>
</div>
</div>
«Шапка» и «Подвал»
Верхний и нижний колонтитулы. Header и Footer
Стилизованные модальный заголовок (хедер) и нижний колонтитул (футер) внутри модального окна. Чтобы разделить в модальном окне информацию на разные разделы контента, используйте следующие классы:
Класс | Описание |
---|---|
.uk-modal-header |
Добавьте этот класс к элементу <div> или <header> чтобы создать модальный заголовок ("хедер", "шапку"). |
.uk-modal-footer |
Добавьте класс к элементу <div> или <footer> чтобы создать в модальном окне нижний колонтитул ("подвал", "футер"). |
Разметка
<div id="my-id" uk-modal>
<div class="uk-modal-dialog">
<button class="uk-modal-close-default" type="button" uk-close></button>
<div class="uk-modal-header">
<h2 class="uk-modal-title"></h2>
</div>
<div class="uk-modal-body"></div>
<div class="uk-modal-footer"></div>
</div>
</div>
Пример
Название в модальном окне
Другой, свежий, розовый гвардейский офицер, безупречно вымытый, застегнутый и причесанный, держал янтарь у середины рта и розовыми губами слегка вытягивал дымок. Было то время перед званым обедом, когда собравшиеся гости не начинают длинного разговора в ожидании призыва к закуске.
Ни одного штриха не мог бы я сделать, а никогда не был таким большим художником, как в эти минуты.
<a class="uk-button uk-button-default" href="#modal-sections" uk-toggle>Открыть</a>
<div id="modal-sections" uk-modal>
<div class="uk-modal-dialog">
<button class="uk-modal-close-default" type="button" uk-close></button>
<div class="uk-modal-header">
<h2 class="uk-modal-title">Название в модальном окне</h2>
</div>
<div class="uk-modal-body">
<p>Другой, свежий, розовый гвардейский офицер, безупречно вымытый, застегнутый и причесанный, держал янтарь у середины рта и розовыми губами слегка вытягивал дымок. Было то время перед званым обедом, когда собравшиеся гости не начинают длинного разговора в ожидании призыва к закуске.</p>
<p>Ни одного штриха не мог бы я сделать, а никогда не был таким большим художником, как в эти минуты.</p>
</div>
<div class="uk-modal-footer uk-text-right">
<button class="uk-button uk-button-default uk-modal-close" type="button">Отмена</button>
<button class="uk-button uk-button-primary" type="button">Сохранить</button>
</div>
</div>
</div>
Модификатор «Container»
Добавьте класс .uk-modal-container
, чтобы развернуть модальное диалоговое окно до ширины контейнера по умолчанию.
<div id="my-id" class="uk-modal-container" uk-modal>...</div>
Заголовок
Проснувшись однажды утром после беспокойного сна, Грегор Замза обнаружил, что он у себя в постели превратился в страшное насекомое.
Лежа на панцирнотвердой спине, он видел, стоило ему приподнять голову, свой коричневый, выпуклый, разделенный дугообразными чешуйками живот, на верхушке которого еле держалось готовое вот-вот окончательно сползти одеяло. Его многочисленные, убого тонкие по сравнению с остальным телом ножки беспомощно копошились у него перед глазами.
<a class="uk-button uk-button-default" href="#modal-container" uk-toggle>Открыть</a>
<div id="modal-container" class="uk-modal-container" uk-modal>
<div class="uk-modal-dialog uk-modal-body">
<button class="uk-modal-close-default" type="button" uk-close></button>
<h2 class="uk-modal-title">Заголовок</h2>
<p>Проснувшись однажды утром после беспокойного сна, Грегор Замза обнаружил, что он у себя в постели превратился в страшное насекомое.</p>
<p>Лежа на панцирнотвердой спине, он видел, стоило ему приподнять голову, свой коричневый, выпуклый, разделенный дугообразными чешуйками живот, на верхушке которого еле держалось готовое вот-вот окончательно сползти одеяло. Его многочисленные, убого тонкие по сравнению с остальным телом ножки беспомощно копошились у него перед глазами.</p>
</div>
</div>
Модификатор «Full»
Чтобы создать модальное окно, которое полностью заполняет всю страницу, добавьте класс .uk-modal-full
. Также рекомендуется добавить класс .uk-modal-close-full
кнопке закрытия для соответствующего ей стиля. Кнопка будет расположена в правом верхнем углу.
Разметка
<div id="my-id" class="uk-modal-full" uk-modal>
<div class="uk-modal-dialog">
<button class="uk-modal-close-full uk-close-large" type="button" uk-close></button>
</div>
</div>
Используя классы компонентов Grid и Width, вы можете создать красивое, полноэкранное модальное окно.
Модальный заголовок
На портрете была изображена дама в меховой шляпе и боа, она сидела очень прямо и протягивала зрителю тяжелую меховую муфту, в которой целиком исчезала ее рука. Затем взгляд Грегора устремился в окно, и пасмурная погода – слышно было, как по жести подоконника стучат капли дождя – привела его и вовсе в грустное настроение. «Хорошо бы еще немного поспать и забыть всю эту чепуху», – подумал он, но это было совершенно неосуществимо, он привык спать на правом боку.
<a class="uk-button uk-button-primary" href="#modal-full" uk-toggle>На весь экран</a>
<div id="modal-full" class="uk-modal-full" uk-modal>
<div class="uk-modal-dialog">
<button class="uk-modal-close-full uk-close-large" type="button" uk-close></button>
<div class="uk-grid-collapse uk-child-width-1-2@s uk-flex-middle" uk-grid>
<div class="uk-background-cover" style="background-image: url('images/photo.webp');" uk-height-viewport></div>
<div class="uk-padding-large">
<h3>Модальный заголовок</h3>
<p>
На портрете была изображена дама в меховой шляпе и боа,
она сидела очень прямо и протягивала зрителю тяжелую меховую муфту, в которой целиком исчезала ее рука.
Затем взгляд Грегора устремился в окно, и пасмурная погода – слышно было,
как по жести подоконника стучат капли дождя – привела его и вовсе в грустное настроение.
«Хорошо бы еще немного поспать и забыть всю эту чепуху», – подумал он,
но это было совершенно неосуществимо, он привык спать на правом боку.
</p>
</div>
</div>
</div>
</div>
Утилита «Overflow»
Плюшка-утилита «Overflow»
Страница в модальном окне будет прокручиваться по умолчанию, если ее содержимое превышает высоту окна.
Чтобы применить полосу прокрутки внутри модального окна,
добавьте атрибут uk-overflow-auto
из компонента Utility
в контейнер с модальным контентом, к примеру, который содержит класс .uk-modal-body
.
<div id="my-id" uk-modal>
<div class="uk-modal-dialog" uk-overflow-auto></div>
</div>
Модальный заголовок
Далеко-далеко за словесными горами в стране гласных и согласных живут рыбные тексты. Вдали от всех живут они в буквенных домах на берегу Семантика большого языкового океана. Маленький ручеек Даль журчит по всей стране и обеспечивает ее всеми необходимыми правилами.
Эта парадигматическая страна, в которой жаренные члены предложения залетают прямо в рот. Даже всемогущая пунктуация не имеет власти над рыбными текстами, ведущими безорфографичный образ жизни. Однажды одна маленькая строчка рыбного текста по имени Lorem ipsum решила выйти в большой мир грамматики.
Великий Оксмокс предупреждал ее о злых запятых, диких знаках вопроса и коварных точках с запятой, но текст не дал сбить себя с толку. Он собрал семь своих заглавных букв, подпоясал инициал за пояс и пустился в дорогу.
Взобравшись на первую вершину курсивных гор, бросил он последний взгляд назад, на силуэт своего родного города Буквоград, на заголовок деревни Алфавит и на подзаголовок своего переулка Строчка. Грустный риторический вопрос скатился по его щеке и он продолжил свой путь. По дороге встретил текст рукопись. Она предупредила его: «В моей стране все переписывается по несколько раз.
Единственное, что от меня осталось, это приставка «и». Возвращайся ты лучше в свою безопасную страну». Не послушавшись рукописи, наш текст продолжил свой путь. Вскоре ему повстречался коварный составитель рекламных текстов, напоивший его языком и речью и заманивший в свое агенство, которое использовало его снова и снова в своих проектах. И если его не переписали, то живет он там до сих пор.
Далеко-далеко за словесными горами в стране гласных и согласных живут рыбные тексты. Вдали от всех живут они в буквенных домах на берегу Семантика большого языкового океана. Маленький ручеек Даль журчит по всей стране и обеспечивает ее всеми необходимыми правилами. Эта парадигматическая страна, в которой жаренные члены предложения залетают прямо в рот.
Даже всемогущая пунктуация не имеет власти над рыбными текстами, ведущими безорфографичный образ жизни. Однажды одна маленькая строчка рыбного текста по имени Lorem ipsum решила выйти в большой мир грамматики. Великий Оксмокс предупреждал ее о злых запятых, диких знаках вопроса и коварных точках с запятой, но текст не дал сбить себя с толку.
Он собрал семь своих заглавных букв, подпоясал инициал за пояс и пустился в дорогу. Взобравшись на первую вершину курсивных гор, бросил он последний взгляд назад, на силуэт своего родного города Буквоград, на заголовок деревни Алфавит и на подзаголовок своего переулка Строчка. Грустный риторический вопрос скатился по его щеке и он продолжил свой путь. По дороге встретил текст рукопись.
Она предупредила его: «В моей стране все переписывается по несколько раз. Единственное, что от меня осталось, это приставка «и». Возвращайся ты лучше в свою безопасную страну». Не послушавшись рукописи, наш текст продолжил свой путь. Вскоре ему повстречался коварный составитель рекламных текстов, напоивший его языком и речью и заманивший в свое агенство, которое использовало его снова и снова в своих проектах. И если его не переписали, то живет он там до сих пор. Далеко-далеко за словесными горами в стране гласных и согласных живут рыбные тексты. Вдали от всех живут они в буквенных домах на берегу Семантика большого языкового океана. Маленький ручеек Даль журчит по всей стране и
<a class="uk-button uk-button-default" href="#modal-overflow" uk-toggle>Открыть</a>
<div id="modal-overflow" uk-modal>
<div class="uk-modal-dialog">
<button class="uk-modal-close-default" type="button" uk-close></button>
<div class="uk-modal-header">
<h2 class="uk-modal-title">Модальный заголовок</h2>
</div>
<div class="uk-modal-body" uk-overflow-auto>
<p>Далеко-далеко за словесными горами в стране гласных и согласных живут рыбные тексты. Вдали от всех живут они в буквенных домах на берегу Семантика большого языкового океана. Маленький ручеек Даль журчит по всей стране и обеспечивает ее всеми необходимыми правилами.</p>
<p>Эта парадигматическая страна, в которой жаренные члены предложения залетают прямо в рот. Даже всемогущая пунктуация не имеет власти над рыбными текстами, ведущими безорфографичный образ жизни. Однажды одна маленькая строчка рыбного текста по имени Lorem ipsum решила выйти в большой мир грамматики.</p>
<p>Великий Оксмокс предупреждал ее о злых запятых, диких знаках вопроса и коварных точках с запятой, но текст не дал сбить себя с толку. Он собрал семь своих заглавных букв, подпоясал инициал за пояс и пустился в дорогу.</p>
<p>Взобравшись на первую вершину курсивных гор, бросил он последний взгляд назад, на силуэт своего родного города Буквоград, на заголовок деревни Алфавит и на подзаголовок своего переулка Строчка. Грустный риторический вопрос скатился по его щеке и он продолжил свой путь. По дороге встретил текст рукопись. Она предупредила его: «В моей стране все переписывается по несколько раз.</p>
<p>Единственное, что от меня осталось, это приставка «и». Возвращайся ты лучше в свою безопасную страну». Не послушавшись рукописи, наш текст продолжил свой путь. Вскоре ему повстречался коварный составитель рекламных текстов, напоивший его языком и речью и заманивший в свое агенство, которое использовало его снова и снова в своих проектах. И если его не переписали, то живет он там до сих пор.</p>
<p>Далеко-далеко за словесными горами в стране гласных и согласных живут рыбные тексты. Вдали от всех живут они в буквенных домах на берегу Семантика большого языкового океана. Маленький ручеек Даль журчит по всей стране и обеспечивает ее всеми необходимыми правилами. Эта парадигматическая страна, в которой жаренные члены предложения залетают прямо в рот.</p>
<p>Даже всемогущая пунктуация не имеет власти над рыбными текстами, ведущими безорфографичный образ жизни. Однажды одна маленькая строчка рыбного текста по имени Lorem ipsum решила выйти в большой мир грамматики. Великий Оксмокс предупреждал ее о злых запятых, диких знаках вопроса и коварных точках с запятой, но текст не дал сбить себя с толку.</p>
<p>Он собрал семь своих заглавных букв, подпоясал инициал за пояс и пустился в дорогу. Взобравшись на первую вершину курсивных гор, бросил он последний взгляд назад, на силуэт своего родного города Буквоград, на заголовок деревни Алфавит и на подзаголовок своего переулка Строчка. Грустный риторический вопрос скатился по его щеке и он продолжил свой путь. По дороге встретил текст рукопись.</p>
<p>Она предупредила его: «В моей стране все переписывается по несколько раз. Единственное, что от меня осталось, это приставка «и». Возвращайся ты лучше в свою безопасную страну». Не послушавшись рукописи, наш текст продолжил свой путь. Вскоре ему повстречался коварный составитель рекламных текстов, напоивший его языком и речью и заманивший в свое агенство, которое использовало его снова и снова в своих проектах. И если его не переписали, то живет он там до сих пор. Далеко-далеко за словесными горами в стране гласных и согласных живут рыбные тексты. Вдали от всех живут они в буквенных домах на берегу Семантика большого языкового океана. Маленький ручеек Даль журчит по всей стране и</p>
</div>
<div class="uk-modal-footer uk-text-right">
<button class="uk-button uk-button-default uk-modal-close" type="button">Сбросить</button>
<button class="uk-button uk-button-primary" type="button">Сохранить</button>
</div>
</div>
</div>
Мультимедиа
Media
Если вы хотите отображать мультимедиа в модальном окне, сначала проверьте, не содержит ли компонент Lightbox всё, что вам нужно. Тем не менее, вы также можете использовать модальное окно, чтобы иметь больше контроля над разметкой.
uk-video
из компонента Видео, чтобы видео останавливало воспроизведение, когда модальное окно закрывается.
Разметка
<div uk-modal>
<div class="uk-modal-dialog uk-width-auto">
<iframe src="" uk-video></iframe>
</div>
</div>
<p uk-margin>
<a class="uk-button uk-button-default" href="#modal-media-image" uk-toggle>Изображение</a>
<a class="uk-button uk-button-default" href="#modal-media-video" uk-toggle>Видео</a>
<a class="uk-button uk-button-default" href="#modal-media-youtube" uk-toggle>YouTube</a>
<a class="uk-button uk-button-default" href="#modal-media-vimeo" uk-toggle>Vimeo</a>
</p>
<div id="modal-media-image" class="uk-flex-top" uk-modal>
<div class="uk-modal-dialog uk-width-auto uk-margin-auto-vertical">
<button class="uk-modal-close-outside" type="button" uk-close></button>
<img src="images/photo.webp" width="1800" height="1200" loading="lazy" alt="Тестовое изображение">
</div>
</div>
<div id="modal-media-video" class="uk-flex-top" uk-modal>
<div class="uk-modal-dialog uk-width-auto uk-margin-auto-vertical">
<button class="uk-modal-close-outside" type="button" uk-close></button>
<video src="/video/caminandes-llamigos.mp4" width="1920" height="1080" controls playsinline uk-video preload="none"></video>
</div>
</div>
<div id="modal-media-youtube" class="uk-flex-top" uk-modal>
<div class="uk-modal-dialog uk-width-auto uk-margin-auto-vertical">
<button class="uk-modal-close-outside" type="button" uk-close></button>
<iframe src="https://www.youtube-nocookie.com/embed/WhWc3b3KhnY" width="960" height="540" loading="lazy" uk-video uk-responsive></iframe>
</div>
</div>
<div id="modal-media-vimeo" class="uk-flex-top" uk-modal>
<div class="uk-modal-dialog uk-width-auto uk-margin-auto-vertical">
<button class="uk-modal-close-outside" type="button" uk-close></button>
<iframe src="https://player.vimeo.com/video/1084537" width="500" height="281" loading="lazy" uk-video uk-responsive></iframe>
</div>
</div>
<p uk-margin>
<a class="uk-button uk-button-default" href="#modal-media-image-dialog" uk-toggle>Изображение + диалоговое окно</a>
<a class="uk-button uk-button-default" href="#modal-media-image-body" uk-toggle>Изображение + диалоговое окно + внутренние отступы</a>
</p>
<div id="modal-media-image-dialog" class="uk-flex-top" uk-modal>
<div class="uk-modal-dialog uk-margin-auto-vertical">
<button class="uk-modal-close-outside" type="button" uk-close></button>
<img src="images/photo.webp" width="900" height="600" loading="lazy" alt="Тестовое изображение">
</div>
</div>
<div id="modal-media-image-body" class="uk-flex-top" uk-modal>
<div class="uk-modal-dialog uk-modal-body uk-margin-auto-vertical">
<button class="uk-modal-close-outside" type="button" uk-close></button>
<img src="images/photo.webp" width="900" height="600" loading="lazy" alt="Тестовое изображение">
</div>
</div>
Модальные группы
Вызвать модальное окно из модального окна
Вы можете сгруппировать несколько модальных окон, связывая одно окно с другим, по типу вперёд и назад. Используйте этот вариант, при создании модальных окон с "шагами", многошаговых модалок, как модальное окно в модальном c неограниченной вложенностью.
<div id="modal-group-1" uk-modal>
<div class="uk-modal-dialog">
<a href="#modal-group-2" uk-toggle>Далее</a>
</div>
</div>
<div id="modal-group-2" uk-modal>
<div class="uk-modal-dialog">
<a href="#modal-group-1" uk-toggle>Предыдущее</a>
</div>
</div>
Модальное окно 1 Модальное окно 2
Модальный заголовок 1
Ну вот живет генерал в своем поместье в две тысячи душ, чванится, третирует мелких соседей как приживальщиков и шутов своих. Всё, что ты вновь возвестишь, посягнет на свободу веры людей, ибо явится как чудо, а свобода их веры тебе была дороже всего еще тогда, полторы тысячи лет назад.
Вспомни первый вопрос; хоть и не буквально, но смысл его тот. Вместо твердого древнего закона — свободным сердцем должен был человек решать впредь сам, что добро...
Модальный заголовок 2
Скажут это они в отчаянии, и сказанное ими будет богохульством, от которого они станут еще несчастнее, ибо природа. Кто знает, может быть, случались и между римскими первосвященниками эти единые. Даже подивиться можно было нелогичности и беспорядку иных желаний его, поневоле выходивших наружу и всегда одинаково неясных. Вот они и поймут, что нечто случилось внезапное и что оченно надо мне их видеть, и тоже мне отопрут, а я войду и доложу.
<p uk-margin>
<a class="uk-button uk-button-default" href="#modal-group-1" uk-toggle>Модальное окно 1</a>
<a class="uk-button uk-button-default" href="#modal-group-2" uk-toggle>Модальное окно 2</a>
</p>
<div id="modal-group-1" uk-modal>
<div class="uk-modal-dialog">
<button class="uk-modal-close-default" type="button" uk-close></button>
<div class="uk-modal-header">
<h2 class="uk-modal-title">Модальный заголовок 1</h2>
</div>
<div class="uk-modal-body">
<p>Ну вот живет генерал в своем поместье в две тысячи душ, чванится, третирует мелких соседей как приживальщиков и шутов своих. Всё, что ты вновь возвестишь, посягнет на свободу веры людей, ибо явится как чудо, а свобода их веры тебе была дороже всего еще тогда, полторы тысячи лет назад.</p>
<p>Вспомни первый вопрос; хоть и не буквально, но смысл его тот. Вместо твердого древнего закона — свободным сердцем должен был человек решать впредь сам, что добро...</p>
</div>
<div class="uk-modal-footer uk-text-right">
<button class="uk-button uk-button-default uk-modal-close" type="button">Сбросить</button>
<a href="#modal-group-2" class="uk-button uk-button-primary" uk-toggle>Далее</a>
</div>
</div>
</div>
<div id="modal-group-2" uk-modal>
<div class="uk-modal-dialog">
<button class="uk-modal-close-default" type="button" uk-close></button>
<div class="uk-modal-header">
<h2 class="uk-modal-title">Модальный заголовок 2</h2>
</div>
<div class="uk-modal-body">
<p>Скажут это они в отчаянии, и сказанное ими будет богохульством, от которого они станут еще несчастнее, ибо природа. Кто знает, может быть, случались и между римскими первосвященниками эти единые. Даже подивиться можно было нелогичности и беспорядку иных желаний его, поневоле выходивших наружу и всегда одинаково неясных. Вот они и поймут, что нечто случилось внезапное и что оченно надо мне их видеть, и тоже мне отопрут, а я войду и доложу.</p>
</div>
<div class="uk-modal-footer uk-text-right">
<button class="uk-button uk-button-default uk-modal-close" type="button">Отмена</button>
<a href="#modal-group-1" class="uk-button uk-button-primary" uk-toggle>Предыдущее окно</a>
</div>
</div>
</div>
Параметры для атрибута
При использовании компонента Modal к атрибуту можно применить любой из этих параметров. Разделяйте несколько вариантов точкой с запятой. Для получения дополнительной информации ознакомьтесь с главой Конфигурация компонента.
Опции компонента
Опция | Значение | По умолчанию | Описание |
---|---|---|---|
esc-close |
Boolean | true |
Закрытие модального при нажатии клавиши Esc. |
bg-close |
Boolean | true |
Закрытие модального при нажатии на фон. |
stack |
Boolean | false |
Модальные стеки, когда открыто более одного. По умолчанию предыдущее модальное будет скрыто. |
container |
String | true |
Определите целевой контейнер с помощью селектора, чтобы указать, где модальный объект должен быть добавлен в DOM. Установка в false предотвратит это поведение. |
cls-page |
String | uk-modal-page |
Класс для добавления в <htm> , когда модальное окно активно. |
cls-panel |
String | uk-modal-dialog |
Класс элемента, который следует считать модальной панелью. |
sel-close |
String | [class*="uk-modal-close"] |
CSS селектор для всех элементов, которые должны вызывать закрытие модального окна. |
JavaScript
Узнайте больше о использовании JavaScript в компонентах фреймворка UIkit 3.
Инициализация
UIkit.modal(element, options);
События
Следующие события будут инициированы для элементов компонента «Modal»:
Имя события | Описание |
---|---|
beforeshow |
Срабатывает до показа элемента. |
show |
Срабатывает после показа элемента. |
shown |
Запускается после завершения анимации показанного элемента. |
beforehide |
Срабатывает до того, как элемент скрыт. |
hide |
Запускается после запуска анимации скрытия элемента. |
hidden |
Срабатывает после того, как элемент скрыт. |
Методы
Для компонента «Modal» доступны следующие методы:
Show
UIkit.modal(element).show();
Показывает модальное окно.
Hide
UIkit.modal(element).hide();
Скрывает модальное окно.
Пример скрытия
Пример кода для скрытия открытого модального окна с ID myModal
.
При нажатии на кнопку с ID myBtnClose
метод setTimeout()
установит таймаут,
модальное окно будет закрыто через четыре секунды.
В примере испольуется JavaScript утилита UIkit.util.on().
util.on('#myBtnClose', 'click', () => {
setTimeout(() => UIkit.modal('#myModal.uk-open').hide(), 4000)
})
// Аналогично
const myBtnClose = document.querySelector('#myBtnClose');
myBtnClose.addEventListener('click', function(event) {
setTimeout(function() {
UIkit.modal('#myModal.uk-open').hide();
}, 4000)
}, false );
Модальные диалоги
Компонент поставляется с рядом подготовленных модальных диалогов, которые вы можете использовать для взаимодействия с пользователем. Вы можете вызвать диалог напрямую из JavaScript и использовать функции обратного вызова.
Код | Описание |
---|---|
UIkit.modal.alert('Уведомление Alert UIkit 3!') |
Показывает окно оповещения с одной кнопкой. |
UIkit.modal.confirm('UIkit confirm!') |
Показывает диалог подтверждения с вашим сообщением и двумя кнопками. |
UIkit.modal.prompt('Имя:', 'Ваше имя') |
Показывает диалог, запрашивающий ввод текста. |
UIkit.modal.dialog('<p>UIkit 3 диалог!</p>'); |
Показывает диалог с любым содержимым HTML. |
Для обработки пользовательского ввода модальное окно использует интерфейс на основе промисов (promise),
который предоставляет функцию then()
для регистрации ваших функций обратного вызова.
Однако функция UIkit.modal.dialog
вернет само модальное окно.
UIkit.modal.confirm('UIkit confirm!').then(function() {
console.log('Confirmed.')
}, function () {
console.log('Rejected.')
});
Возвращаемое обещание (дословный перевод слова "промис") имеет свойство dialog
, которое содержит ссылку на само модальное окно.
Это позволяет вам манипулировать, например, разметкой модального элемента.
Для перевода надписей на кнопках диалоговые функции принимают необязательный параметр объекта options
.
У него есть ключ i18n
и два свойства ok
и cancel
.
// const modal = UIkit.modal.confirm('UIkit confirm!', {i18n: {ok: 'okay123', cancel: 'cancel'}}).dialog;
const modal = UIkit.modal.confirm('UIkit confirm!').dialog; // Модальный компонент
const el = modal.$el; // Модальный элемент
<div class="uk-margin" uk-margin>
<a id="js-modal-alert" class="uk-button uk-button-primary" href="#">Alert</a>
<a id="js-modal-confirm" class="uk-button uk-button-primary" href="#">Confirm</a>
<a id="js-modal-prompt" class="uk-button uk-button-primary" href="#">Prompt</a>
<a id="js-modal-dialog" class="uk-button uk-button-primary" href="#">Dialog</a>
<script>
document.addEventListener("DOMContentLoaded", function(e) {
UIkit.util.on('#js-modal-alert', 'click', function (e) {
e.preventDefault();
e.target.blur();
UIkit.modal.alert('Уведомление Alert UIkit 3!').then(function () {
console.log('Alert closed.')
});
});
UIkit.util.on('#js-modal-confirm', 'click', function (e) {
e.preventDefault();
e.target.blur();
UIkit.modal.confirm('UIkit confirm!').then(function () {
console.log('Confirmed.')
}, function () {
console.log('Rejected.')
});
});
UIkit.util.on('#js-modal-prompt', 'click', function (e) {
e.preventDefault();
e.target.blur();
UIkit.modal.prompt('Имя:', 'Ваше имя').then(function (name) {
console.log('Prompted:', name)
});
});
UIkit.util.on('#js-modal-dialog', 'click', function (e) {
e.preventDefault();
e.target.blur();
UIkit.modal.dialog('<p class="uk-modal-body">UIkit 3 диалог!</p>');
});
});
</script>
</div>
Доступность
Компонент «Модальное окно» (Modal) придерживается Dialog (Modal) Pattern и автоматически устанавливает соответствующие роли, состояния и свойства WAI-ARIA.
- Область modal имеет роль
dialog
и свойствоaria-modal
.
Компонент Close автоматически устанавливает соответствующие роли и свойства WAI-ARIA.
- Значок закрытия имеет свойство
aria-label
, а если используется элемент<a>
, то рольbutton
.
Взаимодействие с клавиатурой
Доступ к модальному компоненту можно получить с помощью клавиатуры, используя следующие клавиши:
-
Клавиша esc закрывает модальное окно.
Если параметр установленesc-close: false
, то это поведение отключено.