极客时间返利平台,你可以在上边通过山月的链接购买课程,并添加我的微信 (shanyue94) 领取返现。

# 写 CSS 时如何避免命名样式冲突

Issue

欢迎在 Gtihub Issue 中回答此问题: Issue 493 (opens new window)

# 1. BEM 式: .home-page .home-page-btn

.home-page {
  .home-page-btn {
  }
}

BEM 有一个缺点,就是有些太长,可适当简化,只包裹该页面组件的根类名,但有可能增加样式冲突的风险

.home-page {
  .btn {
  }
}

# 2. CSS Scoped

scoped css 会对当前组件(scope)下所有元素生成唯一的属性或类名,对所有 CSS 规则将携带唯一属性实现作用域的命名保护

// 手动写
.btn {
}

// 编译后
.btn .jsx-1287234 {
}

css scoped demo

# 3. CSS Module

module css 会对类名进行 hash 化

css modules demo

Last Updated: 11/27/2021, 6:11:48 PM