Если есть необходимость использовать HTML во всплывающих подсказках(tooltip), то вам могут помочь всплывающие блоки.
Разметка
<divid="popup"class="popup"> <divclass="popup-title">Header</div> <divclass="popup-content">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quasi, sit?</div></div><buttontype="button"class="btn"data-popup="#popup">Example</button>
Поддерживаемые атрибуты
Атрибут data-popup является инициатором события вызова всплывающего блока. Данный атрибут может принимать в качестве значения селектор на объект всплывающего блока.
title & content
Вы так же можете обойтись без дополнительного блока и указать название и описание через атрибуты data-popup-title и data-popup-content, однако в таком случае HTML поддерживаться не будет, но и потребность в указании атрибута data-popup отпадёт.
<button type="button" class="btn" data-popup data-popup-content="Простейший всплывающий блок созданный через атрибуты" data-popup-title="Заголовок">Example #1</button>
Значения атрибутов data-popup-title и data-popup-content не являются обязательными, так же как и их аналог через отдельную HTML разметку .popup-title и .popup-content.
target
С помощью атрибута data-popup-target можно указать селектор элемента к которому будет привязан всплывающий блок.
<spanid="target1">Target #1</span><button type="button" class="btn mt-100" data-popup data-popup-target="#target1" data-popup-content="Всплывающий блок с привязкой к другому объекту" data-popup-title="Заголовок">Example #4</button>
overlay
Атрибут data-popup-overlay="true" включает затемнение фона при появлении всплывающего блока. По умолчанию данная функция отключена.
<button type="button" class="btn" data-popup data-popup-overlay="true" data-popup-content="Всплывающий блок с затемнением" data-popup-title="Заголовок">Example #5</button>
autoclose
В качестве значение атрибута data-popup-autoclose принимается целое число - кол-во миллисекунд, по истечению которых всплывающий блок будет автоматически закрыт.
По умолчанию автозакрытие имеет значение 0, что будет означать отсутствие автоматического закрытия.
<button type="button" class="btn" data-popup data-popup-autoclose="3000" data-popup-content="Всплывающий блок с затемнением" data-popup-title="Заголовок">Example</button>
overclose
Атрибут data-popup-overclose включает или отключает закрытие всплывающего блока при нажатии на область, которая не является самим блоком.
По умолчанию данный атрибут имеет значение true.
<button type="button" class="btn" data-popup data-popup-overclose="true" data-popup-content="Всплывающий блок с закрытием" data-popup-title="Заголовок">[data-popup-overclose="true"]</button>
<button type="button" class="btn" data-popup data-popup-overclose="false" data-popup-content="Всплывающий блок без закрытия" data-popup-title="Заголовок">[data-popup-overclose="false"]</button>
direction
По умолчанию направление вывода всплывающего блока установлено как вверх (up) и меняется в зависимости от доступности области, однако вы можете поменять значение по умолчанию на своё с помощью атрибута data-popup-direction, однако блок по прежнему будет проверять доступность выбранного направления или искать другое.
На данный момент доступны следующие направления
up - вверх (по умолчанию)
down - вниз
left - влево
right - вправо
<button type="button" class="btn" data-popup data-popup-content="Блок будет выведен сверху" data-popup-title="Вверх">[data-popup-direction="up"]</button>
<button type="button" class="btn" data-popup data-popup-direction="down" data-popup-content="Блок будет выведен снизу" data-popup-title="Вверх">[data-popup-direction="down"]</button>
<button type="button" class="btn" data-popup data-popup-direction="left" data-popup-content="Блок будет выведен слева" data-popup-title="Вверх">[data-popup-direction="left"]</button>
<button type="button" class="btn" data-popup data-popup-direction="right" data-popup-content="Блок будет выведен справа" data-popup-title="Вверх">[data-popup-direction="right"]</button>
Javascript
Для работы с всплывающими блоками необходимо создать экземпляр класса PipUI.Popup.
По умолчанию инициализация происходит автоматически при клике на элемент
с атрибутом [data-popup].
Инициализация
Конструктор класса PipUI.Popup принимает 2 параметра: HTMLElement и Object
Первый параметр - селектор объекта самого блока всплывающего окна. Может быть пустым.
Второй параметр - объект опций
let popup =newPipUI.Popup('#popup-box');
Опции
// Выводить в консоль отладку
debug: false
// Селектор или HTMLElement к которому будет привязан всплывающий блок
target: undefined
// Список триггеров, при нажатии на которые будет появляться/исчезать блок
triggers: []
// Название, выводимое в всплывающем блоке. Если не указано, то появится без названия.
title: ''
// Содержимое, выводимое в всплывающем блоке. Если не указано, то появится без содержимого.
content: ''
// Направление вывода. Поддерживаются: up, down, left, right
direction: 'up'
// Выводить ли оверлей
overlay: false
// Кол-во миллисекунд, через которое блок автоматически закроется
autoclose: 0
// Закрывать всплывающий блок при клике на область вне самого блока
overclose: true
// Класс присваиваемый всплывающему блоку при открытии
openedClass: 'popup-active'
// Класс присваиваемый оверлею при открытии
openedOverlayClass: 'overlay-active'
// Класс присваиваемый триггеру при открытии
openedTriggerClass: 'active'
// Класс элемента к которому привязан всплывающий блок
targetClass: 'popup-target'
// Класс, присваиваемый элементу к которому привязан всплывающий блок, при открытии
targetActiveClass: 'popup-target-active'
// Функция обратного вызова срабатываемая при появлении всплывающего блока
openCallback: undefined
// Функция обратного вызова срабатываемая при исчезании всплывающего блока
closeCallback: undefined
// Функция обратного вызова срабатываемая при обновлении всплывающего блока
updateCallback: undefined
// Функция обратного вызова срабатываемая при изменении позиции всплывающего блока
repositionCallback: undefined
// Шаблоны
templates: {
// Разметка основного блока всплывающего окна
box: '...'
// Разметка блока оверлея
overlay: '...'
}
Методы
let popup =newPipUI.Navbar('#popup');popup.getID() // Вернет уникальный идентификатор всплывающего блокаpopup.setOptions(object) // Изменить опции блокаpopup.getOptions() // Получить опции блокаpopup.getPosition(name) // Получить актуальную позицию блока(служит для обновления)// Параметр name является направлением позицииpopup.updatePosition() // Обновить позицию всплывающего блокаpopup.update() // Обновить всплывающее окноpopup.hide(callback) // Скрыть панель// Параметр callback является приоритетной функцией обратного// вызова при завершении скрытия, если она задана и через опцииpopup.show(callback) // Показать блок// Параметр callback является приоритетной функцией обратного// вызова при завершении отображения, если она задана и через опцииpopup.isOpen() // Текущее состояние блока (открыт или закрыт)popup.open(callback) // Отобразить блок// Параметр callback является приоритетной функцией обратного// вызова при завершении отображения, если она задана и через опцииpopup.close(callback) // Скрыть блок// Параметр callback является приоритетной функцией обратного// вызова при завершении скрытия, если она задана и через опции
События
Триггер
Описание
Инициатор
open-popup-pipui
Срабатывает при открытии всплывающего блока
.popup
close-popup-pipui
Срабатывает при закрытии всплывающего блока
.popup
update-popup-pipui
Срабатывает при обновлении содержимого всплывающего блока
.popup
update-position-popup-pipup
Срабатывает при обновлении позиции всплывающего блока