Ant Design Vue主题动态修改(简单易用)

效果图:

 Ant Design Vue官网里面对主题动态修改说的很少

里面有用的说法就是,新版本有简单的主题切换方法不需要配置乱七八糟的东西,废话不多说直接上代码

<template>
    <!-- 这里是自己画的按钮,官方的按钮操作不方便 -->
    <span>主题</span><br>
    <div class="theme" style="background-color:#1677ff" @click="color1"></div>
    <div class="theme" style="background-color:#00ffff" @click="color2"></div>
    <div class="theme" style="background-color:#7fffd4" @click="color3"></div>
    <div class="theme" style="background-color:#9932cc" @click="color4"></div>
    <div class="theme" style="background-color:rgb(244, 87, 212)" @click="color5"></div>
    <!-- 设置主题的核心位置 -->
    <a-config-provider :theme="{
        token: {
            colorPrimary: myTheme.color,
        },
    }">
    </a-config-provider>
    <br><br><br>
    <a-popconfirm title="确定要退出登录吗" ok-text="确定" cancel-text="取消" @confirm="confirm" @cancel="cancel">
        <a-button type="primary">退出登录</a-button>
    </a-popconfirm>
</template>
<script setup lang='ts'>
import { message } from 'ant-design-vue';
import { ref, reactive } from 'vue';
import { useRouter } from 'vue-router';
const router = useRouter()
const confirm = (e: MouseEvent) => {
    message.success('确认退出');
    router.push('/login')
};

const cancel = (e: MouseEvent) => {
    message.error('取消退出');
};
//主题颜色
let myTheme = reactive({ color: '#1677ff' })
const color1 = () => {
    myTheme.color = '#1677ff'
}
const color2 = () => {
    myTheme.color = '#00ffff'
}
const color3 = () => {
    myTheme.color = '#7fffd4'
}
const color4 = () => {
    myTheme.color = '#9932cc'
}
const color5 = () => {
    myTheme.color = 'rgb(244, 87, 212)'
}
</script>

<style scoped>
.theme {
    width: 32px;
    height: 32px;
    border-radius: 6px;
    float: left;
    margin-right: 5px;
    cursor: pointer;
}

.theme:hover {
    border: 1px solid white;
}
</style>

这里我踩过一个坑,很多时候在JS里面变量值改变后<template>监听不到,页面不会更新,这时候我们要在JS变量改变的时候告诉<template>我们改东西了你也要跟着动了,vue2的时候用的是$set,而在vue3我们要用reactive,具体使用方法见上文

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值