BEM:前端装修规范——像组装宜家家具一样写CSS

46 阅读3分钟

一、当CSS变成家具城仓库

"这个按钮样式怎么把导航栏搞崩了?!"——每个前端都经历过的"家具倒塌"时刻。直到我们发现了BEM,这个如同宜家说明书般清晰的CSS规范:

/* 传统写法:找不到螺丝的家具 */
.header .button .text {
  color: #333;
}

/* BEM写法:带编号的零件包 */
.weui-page__button--primary {
  color: #07c160;
}

前者就像在宜家仓库里乱翻零件,后者则是每个零件袋都贴着明确标签。


二、BEM拆箱:模块化装修三件套

BEM(块-元素-修饰符)如同现代家居设计理念:

1. 块(Block):独立家具单元

<!-- 组合沙发套装 -->
<div class="sofa-set">
  <div class="sofa-set__cushion"></div>
  <div class="sofa-set__armrest"></div>
</div>
  • 每个块都是独立功能单元(如沙发、餐桌、衣柜)
  • 可以组合嵌套(客厅套件包含沙发+茶几)
  • 命名规则:全小写+连字符(例:weui-page)

2. 元素(Element):家具零部件

<!-- 沙发的组成部分 -->
<div class="sofa-set__leg sofa-set__leg--adjustable"></div>
  • 双下划线连接父块(例:sofa-set__leg)
  • 专属配件不通用(沙发腿不能装在餐桌上)
  • 禁止跨级调用(避免把衣柜抽屉装在床头柜上)

3. 修饰符(Modifier):可调节参数

/* 沙发尺寸调节 */
.sofa-set--L { width: 2.4m; }         /* 整体尺寸 */
.sofa-set__cushion--hard { padding: 8cm; } /* 局部调整 */
  • 双连字符开启调节模式
  • 可整体可局部(就像沙发颜色和坐垫硬度分开调节)
  • 必须依附主体存在(不能单独存在"加大版"属性)

三、WEUI实战:精装房样板间

1. 户型设计:三室两厅结构

<div class="weui-page"> <!-- 整套房子 -->
  <div class="weui-page__hd"> <!-- 玄关柜 -->
    <h1 class="weui-page__title">智能控制面板</h1>
  </div>
  <div class="weui-page__bd"> <!-- 客厅 -->
    <div class="weui-button">灯光开关</div>
  </div>
</div>

2. 智能开关:带状态指示的按钮

.weui-button { /* 基础开关 */
  padding: 12px 24px;
  background: #07c160;
}

.weui-button--disabled { /* 禁用状态 */
  opacity: 0.6;
  cursor: not-allowed;
}

.weui-button__icon { /* 状态指示灯 */
  margin-right: 8px;
}

3. 装修规范:全屋定制标准

/* 房屋地基 */
html, body {
  height: 100%;
}

/* 空间定位系统 */
.weui-page {
  position: absolute;
  top: 0;
  bottom: 0;
}

四、BEM装修施工规范

  1. 独立功能区划分

    /* 错误:混搭风格 */
    .living-room .sofa { ... }
    
    /* 正确:模块化设计 */
    .ikea-sofa { ... }
    
  2. 配件专属管理

    /* 危险操作 */
    .leg { ... } /* 所有家具腿都会受影响 */
    
    /* 安全模式 */
    .ikea-sofa__leg { ... }
    
  3. 参数调节指南

    /* 混乱修改 */
    .sofa.large { ... }
    
    /* 规范调节 */
    .ikea-sofa--large { ... }
    

五、BEM装修队优势报告

传统装修BEM专业施工居住体验提升
随意堆放家具模块化组合+50%
改个沙发影响吊灯独立模块互不干扰+80%
"那个蓝色的...""A3-2柜体板"+120%
每次装修推倒重来局部升级不影响整体+200%

六、装修避坑指南

  1. 命名长度控制:超过三级嵌套就像衣柜套衣柜,找衣服要穿越三个房间
  2. 慎用全局修改:给全屋刷白墙会导致家具颜色也被覆盖
  3. 工具推荐
    npm install postcss-bem # 自动贴标签机
    
  4. 团队公约:制定《装修手册》防止有人往客厅装马桶

七、真实业主反馈

  • "用了BEM之后,新增功能像加个边几一样简单"
  • "新人接手项目,比看懂宜家说明书还快"
  • "再也不用担心甲方说'把这个蓝色按钮移到右边但不要影响标题'"

当你下次看到weui-page__title--secondary这样的类名时,请记住——这不是CSS代码,这是数字世界的精装修方案。现在拿起你的BEM工具箱,开始打造经得起十年考验的前端家居吧!(记得定期用Chrome检查工具做"甲醛检测")