Селектор нескольких классов БЭМ

Я пытаюсь следовать соглашению об именах БЭМ и не знаю, как реализовать следующее: У меня есть блок «подсказки», который должен быть оформлен в разных темах. Допустим, я применяю тему «по умолчанию».

<div class="tooltip tooltip_theme_default"></div>

Всплывающая подсказка может быть размещена вокруг элемента в разных позициях, для меня это звучит так, как будто я должен добавить к блоку модификаторы «горизонтальное положение» и «вертикальное положение».

<div class="tooltip tooltip_theme_default tooltip_horizontal-position_center tooltip_vertical-position_top"></div>

Теперь мне нужно отобразить во всплывающей подсказке украшение, зависящее как от темы, так и от ее положения. Я думаю, что мне нужен множественный селектор классов, но я не вижу примеров множественного селектора, подобного этому, в документации BEM.

.tooltip_theme_default.tooltip_horizontal-position_center.tooltip_vertical-position_top::before {
     /* styles */
 }

Разрешено ли это спецификацией БЭМ?
Можете ли вы назвать какие-либо недостатки?
Должен ли я попытаться переосмыслить свой компонент, чтобы использовать только селекторы плоских классов?


person Andrea Casaccia    schedule 23.11.2015    source источник


Ответы (1)


Хотя БЭМ советует избегать множественных селекторов классов, в вашем случае это нормально. Вы можете использовать библиотеку bem-components в качестве источника примеров. Например. https://github.com/bem/bem-components/blob/v2/design/common.blocks/popup/_theme/popup_theme_islands.styl#L22

person tadatuta    schedule 23.11.2015
comment
Я просто впервые экспериментирую с БЭМ, я пытаюсь понять, может ли он быть полезен для более широкого внедрения в моей компании, но, честно говоря, я удивлен, что первый компонент, который я пытаюсь реализовать, уже требует нарушения соглашения. Мне кажется действительно строгие рамки. Поскольку вы утверждаете, что пристрастились к этому, я хотел бы услышать ваше мнение, может быть, в chat.stackoverflow.com? - person Andrea Casaccia; 23.11.2015
comment
Я лучше приглашу вас на наш форум по адресу en.bem.info/forum (авторизация через github ). Сделаю все возможное, чтобы помочь. - person tadatuta; 25.11.2015