html - BEM 方法论 : Elements outside Block

标签 html css dom bem

想知道 BEM 方法是否正确。假设我有一个组件/ block “盒子”。

<div class="box">
    <div class="box__title">Box Title</div>
</div>

这个盒子可以随处使用。但是例如这个框也可以用在列表 ex 中。

<ul>
    <li>
        <div class="box">
            <div class="box__title">Box Title</div>
        </div>
    </li>
</ul>

这样调用 DOM 类是正确的吗?

<ul class="box__list">
    <li class="box__item">
        <div class="box">
            <div class="box__title">Box Title</div>
        </div>
    </li>
</ul>

所以“box__list”和“box__item”在方 block “box”之外。 "box__item"然后有一些特定的东西。

.box__item {
    margin-bottom: 20px;
 }

这样做是“允许”的,还是我在这里需要完全不同的东西,比如“box-wrapper__list”和“box-wrapper__item”。

感谢评论。 :)

最佳答案

因为元素在 .box 之外,所以不,给它们这些类没有意义。

您必须考虑您的基本组件/ block (想想“构建 block ”)是什么。

组件/ block 是您可以(理想情况下)放置在布局内的任何位置并且仍然具有相同外观/行为的东西,无论父元素或相邻元素如何。 BEM 命名约定试图在这个意义上强制执行 CSS“模块化”。

在我看来,您肯定有一个 .box 组件。如果您认为该列表应该是另一个组件/ block ,则将其命名为其他名称,就像您命名 block 而不是元素一样。

引用资料:

BEM key concepts

BEM naming conventions

关于html - BEM 方法论 : Elements outside Block,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40240807/

相关文章:

html - PNG(或 JPG)有 DPI 吗?还是在构建视网膜时无关紧要?

html - 为什么aspectraio 不适用于Flexbox 子项?

javascript - 检查 style 属性是否存在于 jQuery

javascript - 在 JavaScript 中简洁构建 SVG 节点

reactjs - 测试在 React 功能组件中使用 ref 添加的鼠标事件监听器

html - 调用类时不显示 div 背景色

html - 我的导航栏在 Firefox 中坏了,在其他浏览器中没有

javascript - 将非html文本封装在html文档中

html - div 不跨越页面宽度

javascript - 为什么 CRLF 在使用 php 分配给 &lt;input&gt; 时转换为 LF