scss实现简单换肤

定义variable.scss 文件 定义全局变量

// 字体颜色
$info: red !default;
$danger: #000 !default;
$size: 50px !default;
$sizeMini: 25px !default;
$color: #fff;
$yeColor: yellow;

定义index.scss文件

@import "./variable.scss";
$themes: (
    default: ( // 全局样式属性
        color: $color,
        background:$info ,
        font-size:$size
        ),
    old: (color: $yeColor,
        background:$danger,
        font-size:$sizeMini
         ),
);

@mixin themeify {

    @each $theme-name,
    $theme-map in $themes {
        $theme-map: $theme-map !global;

        [data-theme="#{$theme-name}"] & {
            @content;
        }
    }
}

//声明一个根据Key获取颜色的function
@function themed($key) {
    @return map-get($theme-map, $key);
}

// 获取字体
@mixin font_color($color) {
    @include themeify {
        color: themed($color) !important;
    }
}

@mixin background_color($background) {
    @include themeify {
        background: themed($background) !important;
    }
}
@mixin font_size($font-size) {
    @include themeify {
        font-size: themed($font-size) !important;
    }
}

使用

   @include font_color(color);
   @include background_color(background);
   @include font_size(font-size);

APP.vue中初始化设置body属性

    onMounted(() => {
      document
        .getElementsByTagName("body")[0]
        .setAttribute("data-theme", "default");
    });


第二种方法

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值