BEM CSS 继承?
BEM CSS Inheritance?
我在一个大型网站上工作。我们正在考虑以 BEM 风格编写 CSS,但不确定这是否真的是一个好习惯。 CSS 都是关于继承的,但我在 BEM 中看不到。例如:
.toolbar {
&-btn {}
}
VS
.toolbar {
.btn {}
}
第二个例子中的.btn 可以继承全局.btn class,但是.toolbar-btn class 不会继承这些默认属性。所以你最终写了很多重复的属性。如果 BEM 不继承属性,为什么人们说它完全可以重用?
编辑:我们尽量避免使用扩展功能。
如果您需要将 .btn
定义为全局 class,您应该将其用作修饰符(用于变体)
.btn.btn--primary
// OR
.my-cool-btn.btn--primary.btn--red
这是 Google 新 "Material Design Lite" 框架的方法
.mdl-layout__container //Parent element
--- .mdl-layout //Block
------ .mdl-layout__header //element
------ .mdl-layout__content //element
以及 .mdl-layout__header
元素上的一些修饰符
// Local modifiers
.mdl-layout__header-row
.mdl-layout__header--scroll
// Global modifiers
.demo-header
.is-casting-shadow
.mdl-color--grey-100
.mdl-color-text--grey-800
我强烈建议你看看他们的 repository and this template example
我在一个大型网站上工作。我们正在考虑以 BEM 风格编写 CSS,但不确定这是否真的是一个好习惯。 CSS 都是关于继承的,但我在 BEM 中看不到。例如:
.toolbar {
&-btn {}
}
VS
.toolbar {
.btn {}
}
第二个例子中的.btn 可以继承全局.btn class,但是.toolbar-btn class 不会继承这些默认属性。所以你最终写了很多重复的属性。如果 BEM 不继承属性,为什么人们说它完全可以重用? 编辑:我们尽量避免使用扩展功能。
如果您需要将 .btn
定义为全局 class,您应该将其用作修饰符(用于变体)
.btn.btn--primary // OR .my-cool-btn.btn--primary.btn--red
这是 Google 新 "Material Design Lite" 框架的方法
.mdl-layout__container //Parent element --- .mdl-layout //Block ------ .mdl-layout__header //element ------ .mdl-layout__content //element
以及 .mdl-layout__header
元素上的一些修饰符
// Local modifiers .mdl-layout__header-row .mdl-layout__header--scroll // Global modifiers .demo-header .is-casting-shadow .mdl-color--grey-100 .mdl-color-text--grey-800
我强烈建议你看看他们的 repository and this template example