当前位置:   article > 正文

vue3实现主题切换功能_vue3主题切换

vue3主题切换

 本文使用的技术主要包括 vue3+vite+scss

1.配置全局scss变量

 首先在src目录下创建styles文件夹,并新建common.scss文件,内容如下:

  1. // 文字颜色
  2. $fontColor: var(--font-color, #333);
  3. // 盒子背景
  4. $boxBgColor: var(--bg-color, #ccc);

 修改vite.config.ts文件,引入全局scss文件,内容如下:

  1. export default defineConfig({
  2. plugins: [vue()],
  3. resolve: {
  4. alias: {
  5. '@': path.resolve(__dirname, './src'),
  6. 'components': path.resolve(__dirname, './src/components'),
  7. }
  8. },
  9. css: {
  10. preprocessorOptions: {
  11. scss: {
  12. additionalData: `@import '@/styles/common.scss';` // 引入全局变量文件
  13. }
  14. }
  15. }
  16. })

2.主题控制方法

在src下的hooks文件夹下,新建 changeColor.ts 文件,内容如下:

  1. // 修改主题
  2. import { ref } from 'vue';
  3. const useThem = () => {
  4. const isDarkThem = ref(false); // 是否是暗黑主题
  5. // 主题切换
  6. const changeThem = () => {
  7. if (isDarkThem.value) {
  8. document.getElementsByTagName('body')[0].style.setProperty('--font-color', '#fff');
  9. document.getElementsByTagName('body')[0].style.setProperty('--bg-color', '#000');
  10. } else {
  11. document.getElementsByTagName('body')[0].style.setProperty('--font-color', '#333');
  12. document.getElementsByTagName('body')[0].style.setProperty('--bg-color', '#ccc');
  13. }
  14. }
  15. return { isDarkThem, changeThem }
  16. }
  17. export { useThem };

3.页面使用

引入主题控制方法,使用按钮进行主题切换,内容如下:

  1. <template>
  2. <div class="testPage">
  3. <div class="box">
  4. <span>测试文字</span>
  5. </div>
  6. <el-switch v-model="isDarkThem" class="mb-2" active-text="黑夜" inactive-text="白天" @change="changeThem" />
  7. </div>
  8. </template>
  9. <script setup lang="ts">
  10. import { useThem } from '@/hooks/changeColor'
  11. const { isDarkThem, changeThem } = useThem();
  12. </script>
  13. <style scoped lang="scss">
  14. .box {
  15. background-color: $boxBgColor; // 全局变量
  16. width: 200px;
  17. height: 200px;
  18. margin: 0 auto 20px;
  19. line-height: 200px;
  20. text-align: center;
  21. span {
  22. color: $fontColor; // 全局变量
  23. }
  24. }
  25. </style>

4.效果展示:

展示切换开关的效果,实现主题切换功能 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/82137
推荐阅读
相关标签
  

闽ICP备14008679号