【发布时间】:2013-11-04 21:13:01
【问题描述】:
我一直在一个项目中使用 BEM,以使我的 CSS 更加模块化,遇到了一些我觉得需要澄清一下的情况:
上下文相关的样式。我不断遇到需要根据父项上的类更改模块/组件的样式。
假设我正在设计产品列表。我有我的.product-list 组件,里面有我所有的.product-list__item。 .product-list__item 的内部可能有一个 <h3> 作为产品标题。
我的问题是:
.product-list__item是否也应该有.item的类?产品内的标题是否应具有以下类:
-
.item__title?
-
-
.product-list__item__title?
-
假设该商品内部还有一个描述框,其中包含价格:
- 描述是否应该:
-
.item__description?
-
-
.product-list__item__description?
-
价格应该有:
-
.item__description__price?
-
-
.description__price?
-
-
.price?
-
我做子组件有点需要单独添加自己的组件名称,即:.item 或.description。我猜他们需要它们,因为他们在哪里可以应用他们的样式?
另外,如果我有上述内容,我将有一个 .product-list 组件,听起来不错,但如果子组件有自己的组件名称添加为类,例如 .item,那么它本身就不是很具有描述性是吗?
我知道它们听起来可能很复杂,但我很想在这里感到困惑,并且很想听听您的意见。我已经阅读了大量关于 BEM 的文章,但没有一篇解释过这类事情。
尼尔
【问题讨论】:
-
命名约定是个人选择:做对您的项目有意义的事情。这类问题只会产生固执己见的答案。
-
那你问错地方了。 stackoverflow.com/help/dont-ask
-
@cimmanon BEM(几乎)都是关于命名约定的,所以我认为这是一个有效的问题:它询问如何将定义明确的方法应用于项目。
-
从表面上看,BEM 似乎只是一个命名约定,但应用它有正确的方法和错误的方法,所以关于如何应用它的问题不是我应该如何命名东西的问题 -再次关闭一个问题,因为用户看不到细微差别,这是 Stack Overflow 审核过程的失败
-
我不明白为什么它被关闭了。提出的问题不是基于意见的。这是一个严格的命名约定,有正确和错误的做事方式。如果他问“我应该如何对这些元素进行分类?”好的。那本来是基于意见的,但他专门要求 BEM。
标签: css sass components bem