DevGang
Авторизоваться

Введение в HTML элемент dialog

Диалоги часто используются в веб-приложениях. Они используются для отображения подтверждающих сообщений, оповещений и других вещей, которые подходят для всплывающих окон.

До существования элемента диалогового окна, мы могли использовать только функции встроены в JavaScript для отображения текста сообщений alert и confirm. Они не могут быть стилизованы и не могут отображать ничего, кроме текста.

Также диалоги alert и confirm не могут иметь никаких кнопок, кроме встроенных.

Чтобы упростить создание диалогов без добавления библиотек, теперь мы можем использовать элемент dialog для создания всплывающих диалоговых окон.

В этой статье мы рассмотрим, как добавлять элементы dialog в наши приложения и как с ними работать.

Создание диалогов

Для создания диалогов мы добавим элемент dialog следующим образом:


  

Greetings!

Как вы можете заметить, dialog у нас с атрибутом open, чтобы отобразить диалоговое окно. Стиль по умолчанию зависит от браузера.

В Chrome это выглядит примерно так:

Мы можем добавить любой HTML-элемент. Например, мы можем добавить форму следующим образом:


  

В dialog у нас есть элемент form с method установленным как dialog. Это позволяет нам установить возвращаемое значение диалога, которое мы можем использовать после закрытия окна, нажав «Confirm».

У нас также есть элементы input и select, чтобы позволить нам что - то вводить в нашу форму.

Кроме того, у нас есть кнопка с идентификатором dialog-button, чтобы открыть наше диалоговое окно.

Затем в нашем коде JavaScript мы можем управлять открытием и закрытием диалога и получать введенные значения следующим образом:

const dialogButton = document.getElementById('dialog-button');
const dialog = document.querySelector('dialog');
const output = document.querySelector('output');
const input = document.querySelector('input');
const select = document.querySelector('select');
const confirmBtn = document.getElementById('confirm-btn');

dialogButton.addEventListener('click', () => {
  if (typeof dialog.showModal === "function") {
    dialog.showModal();
  }
});

select.addEventListener('change', (e) => {
  confirmBtn.value = [select.value, input.value].join(' ');
});

input.addEventListener('change', (e) => {
  confirmBtn.value = [select.value, input.value].join(' ');
});

dialog.addEventListener('close', () => {
  output.value = dialog.returnValue;
});

Чтобы открыть dialog у нас есть:

dialogButton.addEventListener('click', () => {
  if (typeof dialog.showModal === "function") {
    dialog.showModal();
  }
});

Метод showModal открывает dialog.

Также у нас есть слушатели для select и input чтобы получить их значения, если пользователь что-то вводит.

Стилизация фона

Чтобы стилизовать фон dialog, мы можем выбрать его с помощью псевдоэлемента ::backdrop и применить к нему стили. Фон рисуется только тогда, когда отображается dialog.

Например, мы можем стилизовать его следующим образом:

dialog::backdrop {
  background-color: lightblue !important;
}

Элемент dialog экономит нам некоторые усилия при создании всплывающих окон. Нам не нужны библиотеки или много кода для создания простых диалогов.

Источник:

#HTML
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

В этом месте могла бы быть ваша реклама

Разместить рекламу