iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >基于Vue2.0和Typescript实现多主题切换的示例
  • 463
分享到

基于Vue2.0和Typescript实现多主题切换的示例

VueTypescript多主题切换Vue多主题切换 2023-05-16 17:05:43 463人浏览 独家记忆
摘要

目录第一步: 需要创建一个colorConfig.ts文件,用于配置主题信息 (我创建的目录是src/config/colorConfig.ts)第二步,根据接口获取当前主题信息,并

之前在项目中用了Sass的多主题切换,感觉太麻烦,后面发现直接用CSS的很方便,所以整理一下,希望可以帮到大家,也是对自己的积累。

第一步: 需要创建一个colorConfig.ts文件,用于配置主题信息 (我创建的目录是src/config/colorConfig.ts)

colorConfig.ts文件的主要定义的内容

 

const COLOR_MAP = {
   // 第一套主题颜色
  theme1: {
    color1: '#FFCDD2', // 主要背景
    color2: '#E1BEE7', // 文字颜色
    color3: '#70767f', // 按钮颜色(灰色)
    color4: '#EF9A9A',
    color5: '#F06292', //弹框背景灰色
    color6: '#7986CB', //主要内容区域背景
    color7: '#64B5F6', //选中状态
  },
  // 第二套主题颜色
  theme2: {
    color1: '#FF7043', // 主要背景
    color2: '#4E342E', // 文字颜色
    color3: '#263238', // 按钮颜色(灰色)
    color4: '#FF6E40',
    color5: '#DD2C00', //弹框背景灰色
    color6: '#616161', //主要内容区域背景
    color7: '#212121', //选中状态
  },
  // 第三套主题颜色
  theme3: {
    color1: '#E65100', // 主要背景
    color2: '#FF6D00', // 文字颜色
    color3: '#1B5E20', // 按钮颜色(灰色)
    color4: '#827717',
    color5: '#00C853', //弹框背景灰色
    color6: '#0091EA', //主要内容区域背景
    color7: '#00BFA5', //选中状态
  }
}


export type THEME_TYPE = keyof (typeof COLOR_MAP)
type THEME_ITEM = keyof (typeof COLOR_MAP['theme1'])



export function changeTheme (theme: THEME_TYPE = 'theme1'): void {
  const themeList = Object.keys(COLOR_MAP[theme]) as THEME_ITEM[]
  themeList.forEach((v: THEME_ITEM) => {
    document.body.style.setProperty(`--${v}`, COLOR_MAP[theme][v])
  })
}

第二步,根据接口获取当前主题信息,并进行切换设置

 // 在App.Vue中引入主题模块
 import { changeTheme } from '@/config/colorConfig'
 
 // 在created读取缓存信息
 created () {
   const theme = localStorage.getItem('theme') || 'theme1'
   // 将主题获取到的主题存到vuex中,记录当前的主题信息,默认主题一 theme1
   store.commit('common/setTheme', theme)
   changeTheme(theme)
   
   
   // 如果主题信息存储在后端,此时需要获取主题信息 (不建议使用)
   getThemeInfo()
 }
 
 
  async getThemeInfo() {
      // 入参
      const requestData = {
        method: 'xxxx',
        params: { method: 'xxx' }
      }
      const response = await this.$axiOS({
        method: 'POST',
        url: `${this.$baseUrl}/xxxx/xxxx/`,
        data: requestData
      }).catch(() => {
        // 接口响应失败默认主题一
        store.commit('common/setTheme', 'theme1')
        changeTheme('theme1')  
      })
      let { code, data } = response?.data || {}
      // 根据code码获取接口响应状态
      if (code === '0000') {
        const theme = data?.theme
        // 将主题获取到的主题存到vuex中,记录当前的主题信息,默认主题一 theme1
        store.commit('common/setTheme', theme ? theme : 'theme1')
        changeTheme(theme ? theme : 'theme1')
      } else {
        // 接口响应失败默认主题一
        store.commit('common/setTheme', 'theme1')
        changeTheme('theme1')
      }
    
}

第三步,切换主题时,更新缓存

  import { changeTheme, THEME_TYPE } from '@/config/colorConfig'
  
  // 主题切换
  themeChange(themeVal): void {
    changeTheme(themeVal as THEME_TYPE)
    store.commit('common/setTheme', themeVal)
    // 存储到缓存中
    localStorage.setItem('theme', themeVal)
    
    // 也可以通过接口调用将themeVal,保存到后端
  }

第四步, 页面上使用css变量来动态展示颜色值

  
  #app {
      width: 100%;
      height: 100%;
      background-color: var(--color1);
      box-sizing: border-box;
      color: var(--color2);
      font-size: 1rem;
   }

效果图如下图所示

theme1.png

theme2.png

theme3.png

到此这篇关于基于Vue2.0和typescript实现多主题切换的示例的文章就介绍到这了,更多相关Vue Typescript多主题切换内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 基于Vue2.0和Typescript实现多主题切换的示例

本文链接: https://www.lsjlt.com/news/210395.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 基于Vue2.0和Typescript实现多主题切换的示例
    目录第一步: 需要创建一个colorConfig.ts文件,用于配置主题信息 (我创建的目录是src/config/colorConfig.ts)第二步,根据接口获取当前主题信息,并...
    99+
    2023-05-16
    Vue Typescript多主题切换 Vue 多主题切换
  • 基于Css Variable的主题切换示例
    小编给大家分享一下基于Css Variable的主题切换示例,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!当接到这个需求的时候,百度到业界关于主题切换的方案还挺多...
    99+
    2023-06-08
  • C#WinForm实现多语言切换的示例
    因项目需要,所以在网上找了一些方法实现了该功能,本文也是做一个总结和记录。使用resx文件实现Winform多语言切换,以实现简体中文、英文、泰语的切换为例。如果后续需要增加其它语言...
    99+
    2023-01-30
    C# WinForm多语言切换 C# 多语言切换
  • vue实现主题切换的多种思路分享
    目录动态改变主题 第一种办法:动态组件 第二种办法,路由隔离 总结 额外补充基于css的两种方法方法一 多套css方法二 scss动态切换变量 动态改变主题 首先需要解决的是如何知...
    99+
    2024-04-02
  • SpringBoot基于AbstractRoutingDataSource实现多数据源动态切换
    目录一、场景二、原理三、代码示例一、场景 在生产业务中,有一些任务执行了耗时较长的查询操作,在实时性要求不高的时候,我们希望将这些查询sql分离出来,去从库查询,以减少应用对主数据库...
    99+
    2024-04-02
  • mysql中MGR单主多主模式切换的示例分析
    这篇文章将为大家详细讲解有关mysql中MGR单主多主模式切换的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。主库执行CREATE DATABASE&n...
    99+
    2024-04-02
  • 如何分析基于GTID的一主两从和主从切换
    这期内容当中小编将会给大家带来有关如何分析基于GTID的一主两从和主从切换,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 故障描述:一主两从...
    99+
    2024-04-02
  • WinForm中怎么实现主题和皮肤切换
    在WinForm中实现主题和皮肤切换通常可以通过以下步骤来实现: 创建多个不同主题或皮肤的样式文件,比如XML文件或INI文件等,...
    99+
    2024-04-08
    winform
  • SpringBoot基于AbstractRoutingDataSource如何实现多数据源动态切换
    本文小编为大家详细介绍“SpringBoot基于AbstractRoutingDataSource如何实现多数据源动态切换”,内容详细,步骤清晰,细节处理妥当,希望这篇“SpringBoot基于AbstractRoutingDataSour...
    99+
    2023-06-30
  • 怎么简单实现CSS主题的切换
    这篇文章给大家分享的是有关怎么简单实现CSS主题的切换的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。HTML首先,我们需要包含“按钮”,这些按钮将触发主题根据选择的主题进行切换。(注:你总是可以使这些作为 opt...
    99+
    2023-06-08
  • 使用forEach和ES6实现tab切换的示例代码
    本文主要介绍了使用forEach和ES6实现tab切换的示例代码,分享给大家,具体如下: 效果: html代码: <ul class="nav"> ...
    99+
    2024-04-02
  • Pythonmatplotlib实现图表主题变换示例详解
    目录一、更换主题样式二、线条变换三、将图表保存成本地图片四、添加辅助线五、调整画图的大小和清晰度六、使用动漫风格七、横坐标的倾斜度八、横纵坐标轴转换有时候因为jupyter note...
    99+
    2024-04-02
  • 基于sklearn实现LDA主题模型(附实战案例)
    目录 LDA主题模型 1.LDA主题模型原理 2.LDA主题模型推演过程 3.sklearn实现LDA主题模型(实战) 3.1数据集介绍 3.2导入数据 3.3分词处理  3.4文本向量化 3.5构建LDA模型 3.6LDA模型可视化  ...
    99+
    2023-09-09
    数据挖掘 数据分析 python sklearn
  • Vue UI框架的主题切换功能实现
    目录AntD 的方式1. 创建黑暗主题文件2. 创建切换主题的函数3. 切换主题Quasar 的方式ElementUI 的方式NaiveUI 的方式在如今,很多网页已经可以手动切换明...
    99+
    2022-12-08
    vue主题切换 vue ui框架主题切换
  • 基于Docker实现Redis主从+哨兵搭建的示例实践
    目录1.拉取镜像2. 编写主 从配置文件2.1 创建/home/redis/redis_conf目录:2.2 编写主配置文件2.3 编写从配置文件2.4  编写从配置文件3...
    99+
    2024-04-02
  • Java基于HttpClient实现RPC的示例
    目录1 HttpClient简介2 代码实现2.1 服务端2.1.1 新建控制器2.1.2 新建启动器2.2 客户端2.2.1 添加依赖2.2.2 新建类3. Jackson用法3....
    99+
    2024-04-02
  • java中多个JDK和切换版本的示例分析
    这篇文章跟大家分析一下“java中多个JDK和切换版本的示例分析”。内容详细易懂,对“java中多个JDK和切换版本的示例分析”感兴趣的朋友可以跟着小编的思路慢慢深入来阅读一下,希望阅读后能够对大家有所帮助。下面跟着小编一起深入学习“jav...
    99+
    2023-06-28
  • WPF实现页面的切换的示例代码
    目录前言一、准备工作二、实现1.使用Frame控件的方式实现2.使用反射的方式实现3.实现效果总结前言 本文主要讲述如何在同一个窗体内,实现不同功能模块的页面切换。 一、准备工作 1...
    99+
    2023-01-30
    WPF 页面切换 WPF 切换页面
  • python基于tkinter点击按钮实现图片的切换
    tkinter是python的标准Tk GUI工具包的接口,在windows下如果你安装的python3,那在安装python的时候,就已经自动安装了tkinter了 如果是在lin...
    99+
    2024-04-02
  • 小程序实现页面多级来回切换的示例代码
    目录第一步第二步全部完整代码wxmljscss第一步 首先通过swiper创建一个简单的多tab页面 通过触发pagechange1方法中的事件对currentIndex来进行赋值...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作