2015-11-23 69 views
0

我正在尝试遵循BEM命名约定,我不确定如何实现以下操作:我有一个“工具提示”块,应该用不同的主题进行样式设计。假设我应用了“默认”主题。BEM多个类选择器

<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 */ 
} 

BEM规范允许吗?
你能想到任何缺点吗?
我应该尝试重新考虑我的组件使用扁平类选择器吗?

回答

1

尽管BEM建议避免使用多个类选择器,但在您的情况下它就好了。您可以使用bem-components library作为示例的来源。例如。 https://github.com/bem/bem-components/blob/v2/design/common.blocks/popup/_theme/popup_theme_islands.styl#L22

+0

我只是第一次尝试使用BEM,我想了解它是否适​​合我公司的大规模采用,但老实说,我很惊讶我试图实施的第一个组件已经需要“打破“公约。在我看来,这是一个非常严格的框架。既然你声称沉迷于它,我想听听你的意见,也许在http://chat.stackoverflow.com/? –

+0

我最好邀请你参加我们的论坛https://en.bem.info/forum/(auth通过github)。将尽我所能提供帮助。 – tadatuta