我将如何使用 BEM 命名这些嵌套元素?

How would I name these nested elements using BEM?

所以我有一个这样的页面:

<div class="dashboard">
  <div class="dashboard-item">
    <div class="dashboard-item__header">
        <span class="dashboard-item__header__icon dashboard-item__header__icon--modifier"></span>Header Title
    </div>
    <div class="dashboard-item__content">
        <p class="???"></p>
    </div>
  </div>
</div>

我有一个仪表板,它是我的容器,它可以有不同的项目。一个项目然后有一个 header 和一些内容,但该项目将始终在仪表板中。那么,我真的应该将其命名为 dashboard__item 吗?

另外,header 和 content 等嵌套元素呢?他们应该使用名称 dashboard__item__header 吗?

我读到我们不应该有这样的嵌套名称,但是 header 不应该单独存在,也不应该存在仪表板项目。

那么我应该如何命名这样的案例呢?

在内容中,如果我有一些元素应该看起来不同,因为它们在仪表板项目中?

should I really name it dashboard__item ?

视情况而定。如果仪表板中的所有项目都非常相似且非常简单,那么使用 dashboard 的元素就可以了。但如果它们不同或复杂,您可以考虑为每种可能的项目创建单独的块,并可选择将它们与 dashboard__item 混合用于定位目的(参见 https://en.bem.info/methodology/faq/#mixes)。

Should they use the name dashboard__item__header?

不,使用 dashboard__item-header 之类的东西。看 https://en.bem.info/methodology/faq/#why-does-bem-not-recommend-using-elements-within-elements-block__elem1__elem2

if I have some elements that should look different because they're inside a dashboard item?

查看此答案的第二部分https://en.bem.info/methodology/faq/#why-should-i-avoid-using-nested-selectors

PS:您一口气回答了我们常见问题解答中的 3 个问题 post! ;)