BEM类名:阻止 - 隐藏还是隐藏?

时间:2015-11-05 13:52:00

标签: bem

使用BEM命名约定时,应该显示和隐藏类是否将块作为名称的一部分?

所以如果我有div.block-class而我想隐藏它,那么它应该是div.block-class.hide还是div.block-class.block-class - hide?

2 个答案:

答案 0 :(得分:1)

第二个选项是正确的,除非您将hide视为与block-class混合的独立块(请参阅https://en.bem.info/faq/#how-do-i-make-global-modifiers-for-blocks)。

答案 1 :(得分:0)

隐藏某些东西的概念在块之间是可以重复使用的。因此,它是实用程序的一个很好的候选者(参见https://github.com/suitcss/suit/blob/master/doc/utilities.md)。因此,您可以拥有.panel--hide.btn--hide,而不是<button class="btn u-hide">...</button><article class="panel u-hide">...</article>。隐藏是一种可以在任何块上以相同的方式执行的操作,而不是以重复的方式在每个块中实现hide,我们使hide自己的函数在任何块上运行。有点像在编程语言中执行hide(panel)。这保留了块DRY。我唯一一次实现隐藏在块本身内的功能,就是隐藏特定块的方式,对于块本身来说是唯一的。

值得注意的是,“隐藏”也可以表示为一种状态(参见https://github.com/suitcss/suit/blob/master/doc/naming-conventions.md#is-stateOfComponent)。州的惯例是它们的前缀是'{ - 1}}或is-hidden中的'is-'。我建议阅读http://csswizardry.com/2015/03/more-transparent-ui-code-with-namespaces/,因为它可以很好地解释状态和实用程序如何与块一起使用。