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

在BEM规范中,h1块内的span属于元素还是修饰符?哪种写法正确?

结论

  • 你的初步判断正确:将h1定义为BEM块(Block)heading时,内部嵌套的span属于该块的元素(Element)
  • 符合BEM规范的是代码片段1,双下划线__是块与元素的专用连接符,双连字符--是修饰符(Modifier)的专用连接符。

BEM命名规则对应说明

BEM三类核心实体的命名规则有明确区分:

  1. 块(Block):独立可复用的功能单元,命名为纯语义字符,无特殊连接符,例:heading
  2. 元素(Element):块的内部组成部分,无法脱离块独立使用,命名规则为块名__元素名,使用双下划线连接。你示例中的主标题、副标题是heading块不可拆分的组成部分,因此heading__main、heading__sub的写法完全符合规范。
  3. 修饰符(Modifier):用于描述块/元素的状态、外观、行为变体,命名规则为块名/元素名--修饰符名,使用双连字符连接。例如heading--center(居中的heading块)、heading__main--bold(加粗的main元素)这类场景才适用双连字符。

代码片段2的问题

代码片段2使用双连字符的写法,相当于将main、sub定义为heading块的修饰符,不符合实际业务逻辑:修饰符是对块本身属性的修改,而两个span是块内部的独立组成部分,不是对heading块的样式变体定义,因此该写法不符合BEM规范。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 15:15:03