BEM 和其他 类 的继承属性
BEM and inheriting properties of other classes
我 运行 遇到了一些 BEM 问题。我有以下内容:
<ul className="AppHeader__subnav-links">
<li className="AppHeader__subnav-link--active">Details</li>
<li className="AppHeader__subnav-link">Conditions</li>
<li className="AppHeader__subnav-link">Actions</li>
<li className="AppHeader__subnav-link">Assets</li>
</ul>
想法是,活动 link 下方会有下划线。但问题在于,由于 BEM 类 都是“独立的”,并且不级联,因此 AppHeader__subnav-link--active
不会从 AppHeader__subnav-link
继承任何东西(很明显)。我有更好的方法来构建它吗?或者我只需要采取以下措施:
&__subnav-link {
// properties
&--active {
@extend .AppHeader__subnav-link;
// properties
}
}
BEM 要求将修饰符 添加 到基础 class。
您的标记的更正版本是:
<ul className="AppHeader__subnav-links">
<li className="AppHeader__subnav-link AppHeader__subnav-link--active">Details</li>
<li className="AppHeader__subnav-link">Conditions</li>
<li className="AppHeader__subnav-link">Actions</li>
<li className="AppHeader__subnav-link">Assets</li>
</ul>
…since BEM classes are all “standalone,” and do not cascade…
我不同意这种说法。 BEM classes 严重依赖级联修饰符。预计将使用基础 class,随后将使用修饰符来覆盖该特定状态的必要样式。
考虑以下 CSS:
.widget {
border-color: gray;
}
.widget--active {
border-color: black;
}
如果顺序互换,修改器将不再正常工作。 BEM 依赖级联,但试图保持较低的特异性以充分利用它。
我 运行 遇到了一些 BEM 问题。我有以下内容:
<ul className="AppHeader__subnav-links">
<li className="AppHeader__subnav-link--active">Details</li>
<li className="AppHeader__subnav-link">Conditions</li>
<li className="AppHeader__subnav-link">Actions</li>
<li className="AppHeader__subnav-link">Assets</li>
</ul>
想法是,活动 link 下方会有下划线。但问题在于,由于 BEM 类 都是“独立的”,并且不级联,因此 AppHeader__subnav-link--active
不会从 AppHeader__subnav-link
继承任何东西(很明显)。我有更好的方法来构建它吗?或者我只需要采取以下措施:
&__subnav-link {
// properties
&--active {
@extend .AppHeader__subnav-link;
// properties
}
}
BEM 要求将修饰符 添加 到基础 class。
您的标记的更正版本是:
<ul className="AppHeader__subnav-links">
<li className="AppHeader__subnav-link AppHeader__subnav-link--active">Details</li>
<li className="AppHeader__subnav-link">Conditions</li>
<li className="AppHeader__subnav-link">Actions</li>
<li className="AppHeader__subnav-link">Assets</li>
</ul>
…since BEM classes are all “standalone,” and do not cascade…
我不同意这种说法。 BEM classes 严重依赖级联修饰符。预计将使用基础 class,随后将使用修饰符来覆盖该特定状态的必要样式。
考虑以下 CSS:
.widget {
border-color: gray;
}
.widget--active {
border-color: black;
}
如果顺序互换,修改器将不再正常工作。 BEM 依赖级联,但试图保持较低的特异性以充分利用它。