You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

BEM规范中Block能否包含可选的Elements?

BEM中Card块的可选Element处理方案

完全可以在其他场景使用不含card__tag的card块,这种做法符合BEM设计逻辑,你的原有思路没问题。

为什么可以省略card__tag?

在BEM规范里,Block是具备独立功能的实体,它内部的Elements(比如card__tag、card__title)是为Block不同功能模块服务的可选组成部分——Block的结构不需要固定包含所有定义过的Elements,而是根据实际业务场景需求,灵活组合必要的Elements即可。

比如你给出的两种结构都是合法的:
带card__tag的结构:

<div class="card">
  <div class="card__tag">
  </div>
  <div class="card__title">
  </div>
  ...
</div>

不带card__tag的结构:

<div class="card">
  <div class="card__title">
  </div>
</div>

什么时候需要把card__tag提取为Mix?

只有当card__tag的样式、行为需要跨Block复用时,才需要把它提炼成独立的Block(比如命名为tag),然后通过Mix的方式在不同Block中复用:

<div class="card">
  <div class="card__tag tag">
  </div>
  <div class="card__title">
  </div>
</div>

如果这个tag只属于card的专属模块,没有在其他Block中复用的需求,完全没必要提取成Mix,保持原有的Element命名,按需省略即可。

总结

你之前“复用Block时按需包含可选元素”的做法是正确的,无需调整。只有当某个Element需要脱离当前Block独立复用时,再考虑将其转化为独立Block并通过Mix使用。

内容的提问来源于stack exchange,提问作者treblig13

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 12:30:54