换主题颜色

效果图

主要知识:

  • css自定义变量:
    :root 文档的根元素,这是一个放自定义属性的好地方,因为我们可以根据其他个别特别的样式的选择性来覆盖自定义属性,语法是 --变量名
  • 自定义变量的使用:
    用var( --变量名)
  • 通过js动态设置变量值 :
    使用 document.body.style.setProperty(’ --变量名’, ‘变量值’)

直接上码记录一下简单的demo(用的vue和less)

  <template>
  <div id="test">
    <button @click="skin(1)">皮肤1</button>
    <button @click="skin(2)">皮肤2</button>
    <button @click="skin(3)">皮肤3</button>
    <p>使用 document.body.style.setProperty('--bg', 'red'); 来设置变量</p>
    <p>使用 document.body.style.getPropertyValue('--bg'); 来获取变量</p>
    <p>使用 document.body.style.removeProperty('--bg'); 来删除变量</p>
  </div>
</template>

<script>
export default {
  data() {
    return {};
  },
  methods: {
  	// 改变根元素中变量的值,达到换肤效果
    skin(e) {
      if (e === 1) {
        document.body.style.setProperty("--bg", "#7F583F");
        document.body.style.setProperty("--color", "#123");
        document.body.style.setProperty("--fontSize", "12px");
        document.body.style.setProperty("--fill", "red");
      }
      if (e === 2) {
        document.body.style.setProperty("--bg", "#687");
        document.body.style.setProperty("--color", "#542");
        document.body.style.setProperty("--fontSize", "14px");
        document.body.style.setProperty("--fill", "#fff");
      }
      if (e === 3) {
        document.body.style.setProperty(
          "--bg",
          `url(${require("@/assets/logo.png")})`
        );
        document.body.style.setProperty("--color", "red");
        document.body.style.setProperty("--fontSize", "16px");
        document.body.style.setProperty("--fill", "#000");
      }
    }
  }
};
</script>

<style lang="less" scoped>
//根元素设置变量(css的语法)
:root {
  --bg: red;
  --color: #000;
  --fontSize: 16px;
  --fill: red;
}
//使用我们定义的变量
#test {
  background: var(--bg);
  height: 500px;
  width: 400px;
  font-size: var(--fontSize);
  color:var(--color);
  .users {
    fill: var(--fill);
    font-size: 100px;
  }
}
</style>
在这里插入代码片

参考:https://www.jianshu.com/p/6606f7aac412

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值