Тег <dialog>
Описание
Тег <dialog> создает модальное или немодальное диалоговое окно, которое можно использовать для форм, уведомлений и другого интерактивного контента. Поддерживает нативный API для управления состоянием.
<dialog id="simpleDialog">
<p>Это нативное диалоговое окно</p>
<button onclick="document.getElementById('simpleDialog').close()">
Закрыть
</button>
</dialog>
<button onclick="document.getElementById('simpleDialog').showModal()">
Открыть диалог
</button>
<dialog id="formDialog">
<form method="dialog">
<h3>Введите данные</h3>
<input type="text" placeholder="Имя" required>
<button type="submit">Подтвердить</button>
<button type="button" onclick="this.closest('dialog').close()">
Отмена
</button>
</form>
</dialog>
<button onclick="document.getElementById('formDialog').showModal()">
Открыть форму
</button>
<style>
dialog {
border: none;
border-radius: 8px;
box-shadow: 0 0 20px rgba(0,0,0,0.3);
width: 80%;
max-width: 500px;
animation: fadeIn 0.3s ease-out;
}
dialog::backdrop {
background: rgba(0,0,0,0.5);
}
@keyframes fadeIn {
from { opacity: 0; transform: translateY(-20px); }
to { opacity: 1; transform: translateY(0); }
}
</style>
<dialog id="styledDialog">
<p>Стилизованное диалоговое окно</p>
<button onclick="this.closest('dialog').close()">OK</button>
</dialog>
Ключевые методы и свойства:
showModal()- открывает модальное окно (с фоном)show()- открывает немодальное окноclose()- закрывает диалогreturnValue- значение, возвращаемое при закрытии::backdrop- псевдоэлемент для стилизации фона
Преимущества использования:
- Нативная реализация без зависимостей
- Встроенная доступность (фокус-ловушка, ARIA-роли)
- Поддержка форм через
method="dialog" - Возможность анимации через CSS
- События
closeиcancel
Советы по использованию:
- Всегда добавляйте способ закрытия диалога
- Для сложных сценариев используйте JavaScript-контроллеры
- Тестируйте в разных браузерах (может потребоваться полифил для старых версий)
- Используйте
autofocusдля элементов формы внутри диалога
Тег <dialog> предоставляет современный стандартизированный способ создания диалоговых окон в веб-приложениях.
Атрибуты
| open | Указывает, что диалоговое окно активно и доступно для взаимодействия |
| accesskey | Определяет горячую клавишу для активации/фокусировки элемента |
| class | Задает один или несколько классов CSS для стилизации элемента |
| contenteditable | Указывает, может ли пользователь редактировать содержимое элемента |
| data-* | Используется для хранения пользовательских данных в элементах |
| dir | Определяет направление текста: слева направо (ltr) или справа налево (rtl) |
| hidden | Скрывает элемент, делая его невидимым и недоступным для пользователя |
| id | Уникальный идентификатор элемента в документе |
| lang | Определяет язык содержимого элемента |
| spellcheck | Указывает, должна ли проверяться орфография в содержимом элемента |
| style | Позволяет задавать CSS-стили непосредственно в атрибуте элемента |
| tabindex | Определяет порядок перехода между элементами при нажатии Tab |
| title | Задает всплывающую подсказку при наведении на элемент |
| translate | Указывает, должен ли переводиться текст внутри элемента |
Поддержка браузерами
![]() |
![]() |
![]() |
![]() |
![]() |
|---|---|---|---|---|
| 79.0 | 37.0 | 24.0 | 98.0 | 15.4 |




