Skip to content

原子化CSS

什么是原子化CSS?

定义:每一个css属性都通过一个css类来实现的一种css写法。 例如:平时写css

html
<div class="demo">文字</div>
<style>
  .demo {
    font-size: 12px;
    color: red;
    line-height: 40px;
  }
</style>

而使用原子化css就会变下以下写法:

html
<div class="text-12 text-red leading-40">文字</div>
<style>
  .text-12 {
    font-size: 12px;
  }

  .text-red {
    color: red;
  }

  .leading-40 {
    line-height: 40px;
  }
</style>

原子化的优点

  • 不必再浪费精力在定义各种类名上
  • 控制css体积
    • 随着项目越来越大,css的体积一定是成等比增加的,在原子化css开发中,我们能做到每一个css属性有且只有一个,复用性达到最大
  • 调试和修改都非常轻松
    • 每一个样式都是独立的一个,没有丝毫的交叉

原子化的缺点

  • class类名过多
    • 原子化相当于把一部分的css代码放到了html中,所以样式多的话会变得很长
  • 样式优先级
    • 因为原子化的css都是平铺的,所以两个样式之间是不会相互覆盖的,并且类也是框架自动生成的,也不能确定谁前谁后
    • 也就是说原子化中没有权重的概念,如果根据条件修改样式则修改使用不同的类名,而不是通过权重修改
html
利用权重来修改样式
<button className={`btn ${disabled ? 'disabled' : ''}`}>按钮</button>
<style>
.btn {
  width: 100px;
  height: 50px;
  background: #f0f;
}

.btn.disabled {
  background: #999;
}
</style>

原子化中使用
<button className={`w-100 h-50 ${disabled ? 'bg-[#999]' : 'bg-[#f0f]'}`}>按钮</button>
  • 需要记很多的类名,记不住了还需要查找

项目中是否可以使用原子化

  • 团队成员理解并接受原子化css的思想
  • 项目定制性比较高,需要书写很多的css
  • 对项目体积有要求的
  • 迁移项目成本问题