使用BEM命名约定时,应该显示和隐藏类是否将块作为名称的一部分?
所以如果我有div.block-class而我想隐藏它,那么它应该是div.block-class.hide还是div.block-class.block-class - hide? p>
答案 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/,因为它可以很好地解释状态和实用程序如何与块一起使用。