Модальное окно с произвольной разметкой и стилизацией.
Esc
.npm i -DE unimodal
Элементы разметки помечаются дата-атрибутами с одинаковым значением:
data-modal
- на узел модального окна.data-modal-open
- на все узлы, открывающие это окно.data-modal-close
- на все узлы, закрывающие это окно.Для выравнивания содержимого по вьюпорту рекомендуются следующие стили: modal.css.
Если используются postcss-import и БЭМ-блок modal
, можно импортировать часть переиспользуемых стилей модального окна:
@import url("../node_modules/unimodal/modal.css");
<script>
window.MODAL_PREFIX = 'modal--'; // modal-- - значение по уполчанию
</script>
<script src="https://efiand.github.io/unimodal/modal.min.js"></script>
import Modal from 'unimodal';
for (const modalElement of document.querySelectorAll('[data-modal]')) {
new Modal(modalElement, 'modal--'); // modal-- - значение по уполчанию
}
или:
import { initModals } from 'unimodal';
initModals('modal--'); // modal-- - значение по уполчанию
Второй параметр конструктора - префикс имён классов-модификаторов:
*ready
- для стилизации модальных особенностей. Полезно для прогрессивного улучшения, когда до загрузки JS модальное окно в потоке.*opened
- для стилизации состояния открытого окна.