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