假设我想要一个 title
block ,出于样式考虑,我需要将它嵌套在一个 div
中,并使用一些特殊的 CSS 样式(例如,我想要特定的边框和间距样式)。我们称此为 box
。该框仅提供其中的 title
样式。
事实上我需要 box
只是因为 CSS 的限制,所以 box
被认为是一个没有意义的BEM 术语中的 block 。它甚至没有意义作为 DOM 元素。但是 title
位于 box
内。
对我来说,给 box
类 title__box
是有意义的,因为没有 title
就没有意义。但是,BEM 的所有示例似乎都假设元素始终是其所在 block 的 DOM 子元素。
最佳答案
在不进一步调查的情况下明确回答您的问题,不。 你必须有类似下面的东西
<div class="decorator">
<h1 class="title">blah blah</h1>
</div>
或
<div class="title">
<h1 class="title__heading">blah blah</h1>
</div>
使用 BEM 时,您必须考虑“ block ”、“元素”及其可重用性。特别是,从开发人员的 Angular 考虑这一点:您不希望最终出现这样一种情况:开发人员将构建有问题的标题并忘记元素或属性,然后发疯地试图弄清楚为什么它没有工作。这使您的标记具有一致性和可复制性。
我对为什么您需要 <div>
没有具体的了解您所说的 CSS 限制是什么,但我相信您的话。
所以我要问:您是否考虑过使用伪选择器清理标记,或者使用标题作为上述容器并使用内联匿名元素(即 <span>
s)?
我希望这有助于解决您的问题。
关于css - 使用 BEM 时,将 block 嵌套在其元素内是否不合逻辑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41723129/