scss与less主题切换对比

less 实现主题切换的语法

// 设置主题模板函数
.common-theme(@backgroundColor, @color) {
  .class__A {
    background-color: @backgroundColor;
    color: @color;
  }
}

// 实现主题-亮色
.theme-light {
  .common-theme(#fff, #d9d9d9);
}
// 实现主题-暗色
.theme-dark {
  .common-theme(#000, #fff);
}

scss 实现主题切换的语法

一、遍历配置

// 主题配置
$theme-config: (
  light: (
    backgroundColor: #fff; color: #d9d9d9;,
  ),
  dark: (
    backgroundColor: #000; color: #fff;,
  ),
);
@each $theme, $config in $theme-config {
  // 属性名使用变量时需要使用#{}包裹
  .theme-#{$theme} {
    .class__A {
      background-color: map-get($config, "backgroundColor");
      color: map-get($config, "color");
    }
  }
}

二、mixin

@mixin common-theme($backgroundColor, $color) {
  .class__A {
    background-color: $backgroundColor;
    color: $color;
  }
}
// 亮色
.theme-light {
  @include common-theme(#fff, #d9d9d9);
}
// 暗色
.theme-dark {
  @include common-theme(#000, #fff);
}

参考资料-less、scss 主题切换