А можно чуть подробнее описать задачу, для которой это может быть необходимо?
Такое в текущий момент правильнее будет рулить через миксы.
Если расскажете зачем вам это нужно — будет проще ;-)
Хочу реализовать лайтбокс на БЭМе. Иными словами, пишу js-реализацию для блока
image
из bem-components, где при клике на экземпляр вызывалось бы окошко с эффектом. Подобное можно сделать, управляясь с jQuery, конечно. Но хочется БЭМ only, что-то вродеНа bem-components это выражается так:
Пример использования:
Большое спасибо!
Залил реализацию сюда Посмотреть результат можно здесь
Почему при клике на картинку
modal
, находящийся вlightbox
со старта, исчезает и появляется внеlightbox
? Как это можно предотвратить?Это сделано специально, чтобы гарантировать, что модал перекроет любые другие блоки и что выпрыгнет из родителя с
overflow: hidden
PS: Картинкам в лайтбоксе можно задатать
display: block
, чтобы не оставалось отступа снизу.Тогда блок
lightbox
служит сугубо для управления модальным окном? (Примиксовать кmodal
статус элемента блокаlightbox
не выходит, так же, как и применить к немуthis.elemify()
, так что стили придется писать сугубо дляmodal
.)Дополнительно: почему модальное окно работает некорректно (не исчезает при клике или нажатии
escape
), если не присваивать ему модификаторtheme: "islands"
? Можно ли обойти эту специфическую особенность?Элемент блока
lightbox
можно положить в контент блокаmodal
, а у самого модала по умолчанию нет визуальных стилей, так что можно задавать их для этого вложенного элемента.Удаление модификатора
visible
при на клике вне модала или нажатии на Esc обеспечивает модификаторautoclosable
(иvisible
корректно удаляется в том числе безtheme: islands
, но визуально модал не исчезает, т.к. без модификатора про тему у него нет никаких стилей, в том числе и тех, которые отвечают за то, что при отсутствии модификатораvisible
он должен быть скрыт.В минимальном случае достаточно создать свою тему (или просто дописать к
modal
без всяких модификаторов) следующего содержания: