BEM规范相关问题:如下代码是否违反BEM规范还是属于mix用法?
BEM规范判断结论
你给出的代码如下:
<button class="corp-info__button-read-more button">Read More</button>
这段代码属于BEM标准的混合(mix)用法,没有违反BEM规范。
核心逻辑说明
- BEM的混合机制本身就允许单个DOM节点绑定多个BEM实体,这是官方推荐的样式扩展方案
- 这里的
button是独立的块(Block),负责封装所有按钮通用的基础样式(比如默认内边距、边框圆角、基础点击交互等),可以脱离任何上下文单独使用 - 这里的
corp-info__button-read-more是隶属于corp-info块的元素(Element),只负责定义这个按钮在「企业信息」模块下的专属差异化样式(比如特殊配色、模块内的外边距、专属hover效果等),不能脱离corp-info上下文使用
这种写法的优势
- 无需重复编写通用按钮的基础样式,大幅提升代码复用率
- 模块专属样式和全局通用样式完全隔离,不会出现样式相互污染的问题,符合BEM的核心设计思想
常见误区澄清
不少初学者误以为BEM要求一个DOM节点只能对应一个BEM类,这是对BEM规范的错误理解。混合用法本身就是BEM原生支持的能力,专门用来解决通用组件在不同业务场景下的样式定制需求。
内容的提问来源于stack exchange,提问作者GeKtoRiX
相关产品推荐
相关产品推荐

