本库整合了常见而公用的 scss 的 mixin 方法,并基于此生成原子化 css,以便用来提升开发效率.
目前这个库是一个纯 scss 库,你也可以通过 build index.scss 文件生成纯 css 代码,他支持任何使用 scss 的项目,不过目前我是以 uniapp 为目标平台开发的,本库已支持 nvue 模式.
本库支持两种调用方式
// xxx.scss
@import 'retrocode-scss-mixin/import.scss';
.someClass {
  @include pos-top(fixed); /* 顶部定位 */
  @include flex-row(); /* flex 行且垂直居中 */
  @include padding-row(); /* 两边加上 15px 的内边距 */
  @include child-gap-right(); /* 子元素之间间隙为 10px */
  @include border-bottom(); /* 底部毛细线 */
}原子化 css 中的 class 命名因为使用较多的简写与 mixin 方法的名称不同,具体可以参考最底部的简写列表
@import 'retrocode-scss-mixin/index.scss';<view class="fixed-top flex-row center bottom p-30 mt-30 fs-30 fw-b bb bw-2 br-30"><view class="grow"></view></view>// 如果担心编译太多 mixin 会影响性能,可分别引入
@import 'retrocode-scss-mixin/src/var.scss';
@import 'retrocode-scss-mixin/src/utils.scss';
@import 'retrocode-scss-mixin/src/border.scss';
@import 'retrocode-scss-mixin/src/flex.scss';
@import 'retrocode-scss-mixin/src/form.scss';
@import 'retrocode-scss-mixin/src/gap.scss';
@import 'retrocode-scss-mixin/src/layout.scss';
@import 'retrocode-scss-mixin/src/others.scss';
@import 'retrocode-scss-mixin/src/position.scss';
@import 'retrocode-scss-mixin/src/text.scss';
// 单个 css 则可以自己打包
@import 'retrocode-scss-mixin/src/flex.scss';
@import 'retrocode-scss-mixin/src/position.scss';
@include flex-build();
@include position-build();不想每个地方都去 @import,可使用 sass-loader 配置, 让其加在编译前达到全局使用的效果,只管 @include 即可。
// 以 vue-cli 的 vue.config.js 举例:
module.exports = {
  css: {
    loaderOptions: {
      sass: {
        // 当 sass-loader 版本
        // 低于 7.0 时 additionalData 需改为 data
        // 低于 9.0 时 additionalData 需改为 prependData
        additionalData: "@import 'retrocode-scss-mixin';"
      }
    }
  }
}// 常用色值,本库会根据该变量生成c-*/bg-*类,以便原子化调用
$colors: (
  /* 
     ===场景色===
     主题 */ primary: #328e80,
  /* 背景 */ background: #eeeeee,
  /* 次级 */ secondary: #424242,
  /* 重点 */ accent: #82b1ff,
  /* 错误 */ error: #ff5252,
  /* 信息 */ info: #2196f3,
  /* 危险 */ danger: #d9534f,
  /* 成功 */ success: #4caf50,
  /* 警告 */ warning: #ffc107,
  /* 阴影色 */ box-shadow-color: rgba(
      $color: #000000,
      $alpha: 0.3
    ),
  /* 边框色 */ border-color: #e8e8e8,
  /* 
     ===常用色===
     红 */ red: #f44336,
  /* 白 */ white: #ffffff,
  /* 橙 */ orange: #f5ad1b,
  /* 深橙 */ deep-orange: #ff5722,
  /* 蓝 */ blue: #2196f3,
  /* 浅蓝 */ light-blue: #03a9f4,
  /* 绿 */ green: #4caf50,
  /* 浅绿 */ light-green: #8bc34a,
  /* 黄 */ yellow: #ffeb3b,
  /* 琥珀 */ amber: #ffc107,
  /* 酸橙 */ lime: #cddc39,
  /* 棕 */ brown: #795548,
  /* 蓝灰 */ blue-grey: #607d8b,
  /* 青 */ cyan: #009688,
  /* 粉 */ pink: #e91e63,
  /* 紫 */ purple: #9c27b0,
  /* 深紫 */ deep-purple: #673ab7,
  /* 靛青 */ indigo: #3f51b5,
  /* 灰 */ gray: #909399,
  /* 黑 */ black: #000000,
  /* 
     ===通用RGB色===
     通用RGB */ e5: #e5e5e5,
  f1: #f1f1f1,
  333: #333333,
  666: #666666,
  999: #999999,
  0ff: #00ffff,
  0f0: #00ff00,
  ff0: #ffff00,
  f00: #ff0000,
  f0f: #ff00ff,
  00f: #0000ff,
  transparent: transparent
);由于配置较多,当前表格可能会有遗漏,部分较难缩写,以及缩写后难以理解的样式(如:box),我没有进行缩写处理,你可以通过阅读源码进行了解学习
| 简写 | 原名 | 
|---|---|
| b- | border | 
| bc- | border-color | 
| bg- | background-color | 
| br- | border-radius | 
| c- | color | 
| fs- | font-size | 
| fw- | font-weight | 
| h- | height | 
| lh- | line-height | 
| m- | margin | 
| o- | overflow | 
| ox- | overflow-x | 
| oy- | overflow-y | 
| p- | padding | 
| pos- | position | 
| t- | text | 
| td- | text-decoration | 
| w- | width | 
| *c | center | 
| *l | left | 
| *r | right | 
| *t | top | 
| *b | bottom | 
| *x | left&right | 
| *y | top&bottom | 
我们可以使用 scss 的@extend 继承来组合我们需要的组件和 class.
例如这样组合一个类名为 d 的 class:
// test.scss
.a {
  background-color: red;
}
.b {
  color: red;
}
.c {
  @extend .a, .b;
}
.d {
  @extend .c, .a;
  font-size: 1px;
}最终 scss 会自动为我们组合生成我们需要的 class.
// test.css
.a,
.c,
.d {
  background-color: red;
}
.b,
.c,
.d {
  color: red;
}
.d {
  font-size: 1px;
}