设计模式
OOCSS
bject Oriented css(面向对象css)的缩写,是一种用最简单的方式编写的CSS代码,从而使代码 重用性,可维护性和可扩展性更好的书写方法。
原则一:结构(基础对象)与皮肤(对象)分离
原则二:容器与内容分离
BEM
- 由块(Block)、元素(Element)、修饰符(modifier)三部分构成
- 通过
__
与--
连接 - 块(Block):独立实体,独立的意义
- 元素(Element):block的一部分,没有独立意义
- 修饰符(modifier):block或element上的标记
SMACSS
- 分类:Base、Layout、Modules、State、Theme
- 好处:易维护、易使用、易复用、易扩展…
- 命名规范:.l-header、.is-hidden、.theme-nav
每个 SMACSS 项目结构分为 5 种规则:
- Base(基础)
基础样式定义了元素全局的默认样式,重置html的默认样式。normalize.css
html {
margin: 0;
font-family: sans-serif;
}
a {
color: #000;
}
Layout(布局)
.l-header
.l-footer
Modules(模块)
可复用的一些模块
.article {
background: #f32;
}
.article--title {
font-size: 16px;
}
.article--text {
font-size: 12px;
}
- State(状态)
建议在状态规则使用前缀。这有助于我们识别它们并给予它们优先权。这里我们使用 is 前缀,如 is-hidden 或 is-selected。
.is-shown {
display: block !important;
}
- Theme(主题)
这个应该是最显而易见的规则,因为它定义了颜色、形状、边框、阴影还有其他等等。这些大多数都是在网站上重复使用的元素。
.theme-button-background
.theme-button-shadow
不要将 SMACSS 主题规则和基础规则混淆,基础规则定义了默认外观,类似于重置浏览器的默认设置,而主题规则定义了一组最终外观的样式,唯一的颜色方案。
ITCSS
越往上复用性越好
- Settings设置 –预处理程序变量和方法(无实际CSS输出)
- Tools工具 – Mixins和函数(无实际CSS输出)
- Generic常规 – CSS重置,其中可能包括Eric Meyer的重置, Normalize.css或您自己的一批代码
- Base元素 –没有类的单个HTML元素选择器
- Objects对象 -通常遵循OOCSS方法的页面结构类
- Components组件 –用于设置任何页面元素和所有页面元素样式的美学类(通常与对象类的结构结合使用)
- Trumps –最重要的样式,用于覆盖三角形中的任何其他内容
Generic 和 Base 对应于 SMACSS 中的 Base
Objects 和 Components 对应于 SMACSS 中的 Modules
ACSS
- 一个样式属性一个类
- 好处:极强的复用性、维护成本低
- 坏处:破坏了CSS命名的语义化
案例:
- tailwindcss
- bootstrap
架构方案选择
由ITCSS/BEM/ACSS综合,基于ITCSS,项目的Style目录:
- Setting
- Tools
Generic使用normalize.css- Base
Components在Vue文件中- ACSS
- Theme
Setting层
定义一些公告变量
公共变量:颜色,边框,字体大小,阴影,层级》。。。
$color-primary: #FF5777;
$color-text-primary: #333333;
$background-color-primary: #F1F1F1;
Tools层
sassmagic库:https://github.com/W3cplus/SassMagic
http://w3cplus.github.io/SassMagic/
使用mixin/function 全局配置:
loaderOptions: {
scss: {
prependData: `
@import "@/style/gobal.scss";
`
}
}
Base层
- Generic层:引入normalize.css,重置浏览器默认样式
- Base层:对各类元素基础样式进行补充
SCSS
- 变量
- 嵌套
- mixin
- function