【问题标题】:Guidelines for how deep to nest BEM style class namesBEM 样式类名称的嵌套深度指南
【发布时间】:2020-07-03 09:53:48
【问题描述】:

我是通过对我在 SO 上提出的另一个问题的推荐而认识 BEM,并且发现它非常有价值。使用一年后,我经常发现自己的构图嵌套层次很深。例如

.abc__main
.abc__main__card
.abc__main__card__item
.abc__main__card__item__heading
.abc__main__card__item__icon
.abc__main__card__item__text
.abc__main__card__item__text__em
.abc__main__card__item__text__em--green

我很确定 BEM 的目的是脱离构图,但我似乎把自己锁在其中。我已经阅读了BEM website,但我觉得我一定错过了什么。

是否有某种指导方针可以帮助您了解应该如何组成一个项目?

例如我应该像这样把它拆开吗(在@Chris Pickford 建议的帮助下):

.abc__main

.abc__card

.abc__item
.abc__item__heading
.abc__item__icon
.abc__item__text
.abc__item__text__em
.abc__item__text__em--green

编辑:感谢 Chris 的回答,我刚刚意识到它不称为 BEEM 或 BEEEM,而只是 BEM,块内应该只有一个嵌套元素。

【问题讨论】:

  • 卡不会是它自己的块吗?你为什么要嵌套它们?
  • 嗯,这很好,为什么,因为我一直只是嵌套所有内容。

标签: css bem


【解决方案1】:

您应该完全扁平化您的块结构以使用 BEM 约定。

它可能看起来像这样:

.abc {}
.abc__main {}
.card {}
.card__item {}
.card__heading {}
.card__icon {}
.card__text {}
.card__text--em {}
.card__text--green {}

这里的常见问题解答中:http://getbem.com/faq/#css-nested-elements

【讨论】:

  • 这是有道理的。对不起,我忘了提,abc 是一个全球唯一的首字母缩写词,以确保它不与另一个类同名
  • 最初我将em 作为text 的子组件,即可能是一个跨度。所以我想它会是 .card__em 和 .card__em--green ?
猜你喜欢
  • 2015-06-23
  • 2018-09-14
  • 2021-10-20
  • 1970-01-01
  • 2014-04-29
  • 1970-01-01
  • 2015-09-21
  • 2019-04-23
相关资源
最近更新 更多