css 架构分类初探

103 阅读1分钟

OOCSS

  • OO:面向对象
  • 原则一:容器与内容分离
  • 原则二:结构(基础对象)与皮肤分离
  • 原则三:面向设计开发(待定)
  • vue中组件 = OOCSS
  • OOCSS应用:grid栅格布局、布局组件等

BEM

  • 快(Block)、元素(Elment__)、修饰符(Modifier --)
  • 作用:命名规范、让页面结构清晰
  • 进阶版的OOCSS

SMACSS

  • 分类:Base,Layout,Modules,State,Theme
  • 好处:易维护,易复用,易扩展
  • 命名规范:.l-header,.is-hidden,.theme-nav

ITCSS

  • 分层:七层
  • 与SMACSS区别:层次分的更细

1661311519116.png

Settings层代码实现

  • 定义一些公共变量
  • 公共变量:颜色、边框、字体大小、阴影、层级

Tools层代码实现

  • 引入SassMagic

Base层代码实现

  • Generic层:引入normalize.css,重置浏览器默认样式
  • Base层:对各类元素基础样式进行补充

Components层代码实现

  • OOCSS >> BEM(进阶版OOCSS)
  • 经典的组件:栅格、布局组件
  • 自定义组件

1661345279656.png

ACSS层代码实现

  • 让样式极限复用
  • 解决ACSS无语义化缺点:属性选择器 如 [font-primary] {color:#333}
  • Setting与ACSS层的关系:ACSS的两个来源。Setting个设计分析

Theme层代码实现

在全局加上一个属性选择器

[data-theme='default'] .box{
    background:blue
}

setup() {
    onMounted(()=>{
        window.documentElement.setAttribute(
            "data-theme",
            "cool"
        )
    })
}

ACSS

  • 一个样式属性一个类
  • 好处:极强的复用性、维护成本低
  • 好处:破坏了css的语义化