BLOGTOP

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » BLOGTOP » Уголок wap мастера » JavaScript » HTML5: новый элемент Dialog


HTML5: новый элемент Dialog

Сообщений 1 страница 1 из 1

1

НОВЫЕ ЭЛЕМЕНТЫ HTML5 И НОВЫЕ API-ИНТЕРФЕЙСЫ JAVASCRIPT ПОЗВОЛЯЮТ НАМ СОЗДАВАТЬ СЛОЖНЫЕ ПРИЛОЖЕНИЯ ДЛЯ БРАУЗЕРОВ.

https://i.imgur.com/LKQL1ha.jpg
Частью любого современного приложения являются различные диалоговые окна. Они предлагают пользователям подтвердить выполнение каких-либо действий или просто выдают сообщения. С новым элементом "<dialog>" теперь мы можем создавать эти окна при помощи чистого HTML5.

ПРОСТАЯ РАЗМЕТКА БЕЗ СТИЛЕЙ
Элемент <dialog> может быть размещен в любом месте внутри тега body на HTML-странице. Не рекомендуется размещать его в текстовых параграфах - <p>, так как это может привести к проблемам с отображением. Это, скорее всего, произойдет с элементами <dialog>, которые содержат дополнительные элементы и не только текстовые. Определение свойства "open" покажет диалоговое окно при открытии страницы. Без этого свойства окно будет в первоначальном виде закрыто.

Код:
<p>Пожалуйста, прочтите наши <span>Условия предоставления услуг</span>.</p>
<dialog open>
Условия предоставления услуг …
</dialog>
<p>…</p>

В нашем примере мы определили диалоговое окно между двумя параграфами. Такое положение элемента гарантирует, что он будет показан горизонтально по центру, не принимая во внимание поток других элементов. Вертикально оно вычисляет свою позицию относительно верхней границы окна браузера. Если вас это устраивает, то использование CSS не требуется.

Если стандартное представление не для вас, добавьте свои собственные стили и настройте его по своему вкусу. Вы можете использовать любые свойства CSS, как для настройки блочных элементов - наиболее используемые "border-radius" и "shadow" для дополнительных эффектов.

УПРАВЛЕНИЕ DIALOG С ПОМОЩЬЮ JAVASCRIPT
Чтобы открыть и закрыть элемент <dialog> используйте методы JavaScript show() и close().

Код:
document.getElementsByTagName("span")[0].addEventListener("click", function() {
  document.getElementsByTagName("dialog")[0].show();
}, false);

document.getElementsByTagName("dialog")[0].addEventListener("click", function() {
  this.close();
}, false);

В нашем примере мы определяем два события. Первое событие приводит к открытию диалогового элемента при нажатии на первый элемент <span>. При нажатии на открытое диалоговое окно оно будет закрыто.

ФОРМЫ ВНУТРИ ЭЛЕМЕНТА DIALOG
Элемент <dialog> способен содержать не только простой текст, но также дополнительные элементы. Это позволяет нам, например, разместить форму внутри диалогового окна. Имейте ввиду, что вместо обычных методов "post" и "get" вам нужно будет использовать специальный метод "dialog" для обработки содержимого формы.

Код:
<dialog>
<p>Наши Условия предоставления услуг …</p>
<form method="dialog">
<button type="submit" value="yes">Принять</button>
<button type="submit" value="no">Отказаться</button>
</form>
</dialog>

В этом примере мы создали форму с двумя кнопками внутри диалога. Нажатие любой из кнопок приводит к закрытию диалогового элемента. JavaScript здесь не требуется. Но если вы хотите предотвратить закрытие окна по клику, Вам все еще необходимо использовать JavaScript. Достаточно добавить событие "click" для кнопки, которое будет предотвращать действие кнопки по умолчанию с помощью "preventDefault()".

РЕАКЦИЯ НА ЗАКРЫТИЕ ДИАЛОГОВОГО ОКНА
Событие "close" позволяет нам реагировать на закрытие диалогового окна.

Код:
document.getElementsByTagName("dialog")[0].addEventListener("close", function(e) {
  var answer = this.returnValue;
}, false);

Свойство "returnValue" возвращает "value" - значение кнопки, которая была использована, чтобы закрыть окно. Если в нашем примере была нажата кнопка "Отказаться" "ReturnValue" вернет значение "no" (value="no"). Это дает нам простой способ инициирования определенных функций в зависимости от нажатой кнопки.

СОЗДАНИЕ МОДАЛЬНОГО ДИАЛОГОВОГО ОКНА
Если вы хотите быть уверенным, что никакое другое содержимое вашей HTML-страницы не может быть доступно пока диалоговое окно открыто, то вы можете использовать модальные диалоговые окна. Они будут открыты только при помощи JavaScript и его метода "showModal()". Модальные диалоги делают неактивным все другое содержимое. Вы не можете нажать, изменить, или выбрать неактивное содержимое.

Код:
document.getElementsByTagName("dialog")[0].showModal();

В отличие от стандартных диалоговых окон, модальный вариант будет отцентрирован не только по горизонтали, но и по вертикали.

Если вы хотите использовать другой цвет вы можете использовать псевдо-элемент "::backdrop". Убедитесь, чтобы вы выбрали цвет с низким значением "RGBA()", чтобы избежать полного сокрытия содержания.

Код:
dialog::backdrop {
  background: rgba(255, 0, 255, 0.25);
}

В нашем примере мы решили использовать светло-желтый цвет. Если вы хотите, вы можете выбрать фоновое изображение вместо цвета.

МОДАЛЬНЫЕ ДИАЛОГИ ВСЕГДА МОЖНО ЗАКРЫТЬ НАЖАВ КЛАВИШУ ESC.
Это делает необходимым добавить еще одно событие в диалоге. Как только событие "close" сработало, когда окно закрывается с помощью кнопки формы, убедитесь, чтобы вы добавили событие "cancel". Оно будет срабатывать, как только модальное окно закроется при помощи клавиши ESC.

Код:
document.getElementsByTagName("dialog")[0].addEventListener("cancel", function(e) {
  var answer = "cancelled";
}, false);

Использование более одного элемента Dialog на странице
Если Вы имеете больше чем один открытый диалог в одно и тоже время, используйте стили чтобы убедиться, что они не перекрываются. Исключение для модальных окон, они всегда будут блокировать другое содержимое и, таким образом, не позволят использование более чем одного модального окна одновременно.

Поддержка  элемента <dialog> еще не достаточно распространена на момент написания этой статьи. Только Chrome и Safari интерпретируют элемент правильно. Все остальные браузеры рассматривают его как простой блочный элемент, что означает, что они всегда будут показывать его содержимое независимо от того установлено свойство "open" или нет

Подпись автора

вопрос по ◆ВТ◆ в личку

вопрос по ◆ВТ◆ в тему

0

Быстрый ответ

Напишите ваше сообщение и нажмите «Отправить»


упс таблица

Откуда гость?
ВНИМАНИЕ! В подписи запрещены ссылки на конкурирующие сайты или форумы!


Вы здесь » BLOGTOP » Уголок wap мастера » JavaScript » HTML5: новый элемент Dialog