🌟 超有趣!BEM命名规范+微信WEUI:原来大厂CSS是这样"起名字"的!

172 阅读2分钟

一、BEM规范:前端开发的命名艺术

BEM(Block, Element, Modifier)是一种组件化的CSS命名方法论,由Yandex团队提出,已成为大厂协作的行业标准。其核心思想是将界面拆分为独立块,通过严格命名规则解决样式冲突问题。

1. 核心概念解析

  • Block(块) :独立的逻辑功能单元(如.weui-page
  • Element(元素) :块的组成部分,用双下划线连接(如.weui-page__header
  • Modifier(修饰符) :表示状态变化,用单下划线连接(如.weui-btn_primary

2. 命名规范示例

css

复制

下载

/* 块 */
.weui-page 

/* 块__元素 */
.weui-page__title 

/* 块__元素_修饰符 */
.weui-btn_primary 

二、WEUI框架:微信官方设计语言实践

WEUI是微信官方推出的移动端UI框架,完美践行BEM规范。其设计特点包括:

  • 符合微信原生视觉体验
  • 组件化开发模式
  • 严格的BEM命名体系
  • 轻量级(仅50KB+)

三、代码实例解析

1. 页面结构(Block)

<div class="weui-page"> <!-- 根块 -->
  <header class="weui-page__header"> <!-- 元素 -->
    <h1 class="weui-page__title">Button</h1> <!-- 元素 -->
  </header>
</div>

2. 按钮组件(Modifier应用)

<a class="weui-btn weui-btn_primary">主要操作</a>
<a class="weui-btn weui-btn_default">次要操作</a>

通过修饰符区分按钮类型,保持核心.weui-btn样式复用。

3. 列表组件(Element嵌套)

<div class="weui-cells"> <!-- 块 -->
  <div class="weui-cell"> <!-- 元素 -->
    <div class="weui-cell__hd"> <!-- 子元素 --></div>
    <div class="weui-cell__bd"> <!-- 子元素 --></div>
  </div>
</div>

四、BEM在WEUI中的优势体现

  1. 样式隔离
    所有类名前缀weui-避免全局污染

    .weui-page__title { /* 仅影响标题元素 */ }
    
  2. 语义清晰
    类名自解释文档作用(如__header__body

  3. 维护便捷
    新增状态只需添加修饰符:

    .weui-btn_disabled { /* 禁用状态 */ }
    
  4. 协作效率
    团队遵循统一规范,降低沟通成本

五、实战建议

  1. 命名三原则

    • 块:.project-block
    • 元素:.project-block__item
    • 修饰符:.project-block__item_active
  2. 避免深度嵌套
    保持最大三级结构:

    /* 推荐 */
    .block__element_modifier 
    
    /* 避免 */
    .block__element__subelement
    
  3. SCSS优化写法
    利用预处理器的嵌套特性:

    .weui-page {
      padding: 18px;
      
      &__header {
        padding: 40px;
      }
    }
    

六、总结

WEUI通过BEM规范实现了:
✅ 样式高度可复用(按钮复用率100%)
✅ 组件解耦(页面/表单/列表独立开发)
✅ 视觉一致性(微信原生体验)
✅ 协作标准化(腾讯团队协作范式)

BEM不仅是命名规范,更是前端工程化的基础思维。掌握它能让你在复杂项目中游刃有余,而WEUI的源码(GitHub: Tencent/weui)是学习BEM实践的最佳范例。

正如WEUI所证明:优秀的框架始于严谨的规范,终于高效的协作。