赞
踩
主题切换是项目常见的一个功能,在用户环境下可以自己选择模式,所以今天就来实现一个scss主题切换
其实实现主题切换是比较简单的,我们来创建俩个scss文件分别是variable.scss和mixin.scss,因为要切换颜色所以我们要在variable文件中定义样式,然后在mixin中定义一个混入,然后再在vue文件引入我们的混入方法就好了,话不多说下面就是实战了
$font-color-c6875c:#c6875c;
$font-color-bd827c:#bd827c;
$font-color-d9c19f:#d9c19f;
$font-color-9388b3:#9388b3;
$font-color-8a9cc2:#8a9cc2;
$font-color-2d262d:#2d262d;
$font-color-232122:#232122;
$font-color-7aa297:#7aa297;
$font-color-2B5575:#2B5575;
像我这样在variable.scss中写入这些颜色变量,然后我们就可以在mixin文件中混入
关于混入这一块如果没有scss基础可能会有点懵,混入其实就是scss提供的一个方法,他可以让你在整个网站上定义一个重复使用css变量的方法,然后还可以根据条件来该变值,所以我们才可以利用他来切换主题
@mixin font_color($color) {
/*通过该函数设置字体颜色,后期方便统一管理;*/
color: $color !important;
[data-theme="theme1"] & {
color: $font-color-2B5575 !important;
}
}
通过这种方式来定义一个混入,传入的color将会做为你的初始颜色,然后你可以通过@include指令来使用
<template> <div @click="switch"> 主题文字切换 </div> </template> <script lang="ts" setup> import { ref } from 'vue'; const flag= ref<boolean>(false); const switch = () => { // 在这里传入一个一个属性来改变全局 flag.value = !flag.value; flag.value ? window.document.documentElement.setAttribute("data-theme", "theme1") : window.document.documentElement.setAttribute("data-theme", ""); } </script> <style lang="scss" scoped> @import "../../assets/mixin.scss"; .font{ @include font_color($font-color-c6875c:#c6875c); // 这个color是通过变量来注册的,但你也可以随便传入一个颜色进去,比如:#ffffff; } </style>
好了所有步骤就都完成了,主题切换也大功告成了,下面是俩张实现的图,但不是上面的代码,是为了简洁一点会方便大家的理解
最后如果实现中出现了报错,可以加群:662934214
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。