在sass中动态主题色切换

在sass中动态主题色切换

第一种方式(使用@mixin指令)

定义不同的主题色

$themes: (
  oldUi: (
    color: #1fbb7d,
    bg_color:#1fbb7d
  ),
  newUi: (
    color: #0A6CFF,
    bg_color:#0A6CFF
  )
);
@mixin theme {
  @each $themes-key, $themes-map in $themes {
    $themes-map: $themes-map !global;
    [data-theme=#{$themes-key}] & {
      @content;
    }
  }
}
// 获取对应的主题数据
@function t($key){
  @return map-get($themes-map,$key)
}

在外层使用data-theme设置不同的主题色

<div data-theme='newUi'></div>

使用

@import '../../theme.scss';
.icon{
    border: 1px solid red;
    @include theme{
        color: t('color');
    }
}

想要动态切换主题色只需要动态控制data-theme的值发生改变即可

第二种方式(使用css3的var函数)

定义两种不同的主题

:root[colorTheme='oldUI']{
  --theme-color:#1FBB7D;
}
:root[colorTheme='newUI']{
  --theme-color:#0A6CFF;
}

通过设置document属性达到切换动态控制主题切换

 document.documentElement.setAttribute('colorTheme','newUI')

使用

.btn-primary {
  color: #fff;
  background-color: var(--form-theme-color);
}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值