灏天阁

基于 scss 的主题配色解决方案

· Yin灏
  • 定义主体数组
$themeArr: (
    "theme1": (
        "color": green,
        "background": red,
    ),
    "theme2": (
        "color": orange,
        "background": blue,
    ),
    "theme3": (
        "color": orange,
        "background": blue,
    ),
);
  • 定义处理主体的方法
@mixin setThemes($keyStyle:"color",$themes:$themeArr) {
    @each $theme,$map in $themes {
        .body-theme-#{$theme} & {
            #{$keyStyle}: map-get($map, $keyStyle);
            /**相比前面的方法,这里多了这句话**/
            @content;
        }
    }
}
  • 编译
p{
    font-size: 20px;
    line-height: 20px;
    @include setThemes('color') {
        font-size: 30px;
    };
}
  • 编译后结果
@charset "UTF-8";
p {
  font-size: 20px;
  line-height: 20px;
}

.body-theme-theme1 p {
  color: green;
  /**相比前面的方法,这里多了这句话**/
  font-size: 30px;
}

.body-theme-theme2 p {
  color: orange;
  /**相比前面的方法,这里多了这句话**/
  font-size: 30px;
}

.body-theme-theme3 p {
  color: orange;
  /**相比前面的方法,这里多了这句话**/
  font-size: 30px;
}
/*# sourceMappingURL=test.css.map */

- Book Lists -