18. Vue-element-template白天黑夜模式动态切换

news2024/11/26 2:27:41

两套主题动态切换

1. 去官网生成两套主题拷贝到 resources/src/assets/theme

https://element.eleme.cn/#/zh-CN/theme

2. 也可以本地修改 element-variables.scss 然后运行et生成

  1. 安装 (注意Node版本)
➜  Genes-Admin git:(ogenes) sudo n 10.16.0
➜  Genes-Admin git:(ogenes) npm -v
6.9.0
➜  Genes-Admin git:(ogenes) node -v
v10.16.0
➜  Genes-Admin git:(ogenes) sudo npm i element-theme -g --unsafe-perm=true --allow-root
  1. 初始化变量文件
➜  Genes-Admin git:(ogenes) ✗ et -i element-variables-light.scss
➜  Genes-Admin git:(ogenes) ✗ et -i element-variables-dark.scss
  1. 分别修改变量文件来修改样式,然后运行 et 命令先后生成两套主题拷贝到 resources/src/assets/theme
#light
➜  Genes-Admin git:(ogenes)mkdir -p resources/src/assets/theme/dark resources/src/assets/theme/light
➜  Genes-Admin git:(ogenes) ✗ et -c element-variables-light.scss

✔ build element theme
✔ build theme font
➜  Genes-Admin git:(ogenes)mv theme/fonts resources/src/assets/theme/light 
➜  Genes-Admin git:(ogenes)mv theme/index.css resources/src/assets/theme/light
➜  Genes-Admin git:(ogenes)rm -rf theme

#dark
➜  Genes-Admin git:(ogenes) ✗ et -c element-variables-dark.scss 

✔ build element theme
✔ build theme font

➜  Genes-Admin git:(ogenes)mv theme/fonts resources/src/assets/theme/dark 
➜  Genes-Admin git:(ogenes)mv theme/index.css resources/src/assets/theme/dark 
➜  Genes-Admin git:(ogenes)rm -rf theme

3. 以上两步目的都是得到两套主题,最终目录结构为

image-20220901170506241

4. 引入深色主题测试

#vim resources/src/main.js
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
#加入自定义主题样式
import '@/assets/theme/dark/index.css'

import '@/styles/index.scss' // global css

image-20220902102318133

5. 动态切换

  1. 添加默认setting.theme
  #vim resources/src/settings.js ,加上以下配置
  /**
   * @type {string} light | dark
   * @description theme
   */
  theme: 'dark'
  1. 修改setting module,支持获取和修改theme,并保存到 localStorage
import defaultSettings from '@/settings'

const { showSettings, fixedHeader, sidebarLogo, theme } = defaultSettings

function getItem(key, def) {
  return localStorage.getItem(key) === null ? def : localStorage.getItem(key);
}

function setItem(key, value) {
  localStorage.setItem(key, value);
}

const state = {
  showSettings: getItem('showSettings', showSettings),
  fixedHeader: getItem('fixedHeader', fixedHeader),
  sidebarLogo: getItem('sidebarLogo', sidebarLogo),
  theme: getItem('theme', theme),
}

const mutations = {
  CHANGE_SETTING: (state, { key, value }) => {
    // eslint-disable-next-line no-prototype-builtins
    if (state.hasOwnProperty(key)) {
      state[key] = value
      setItem(key, value);
    }
  }
}

const actions = {
  changeSetting({ commit }, data) {
    commit('CHANGE_SETTING', data)
  }
}

export default {
  namespaced: true,
  state,
  mutations,
  actions
}


  1. 修改引入css的逻辑,基于setting.theme 引入css文件
#新建文件 resources/src/styles/index.js
import store from '@/store'

if (store.state.settings.theme === 'dark') {
  import('@/assets/theme/dark/index.css');
} else {
  import('@/assets/theme/light/index.css');
}

import '@/styles/index.scss' // global css

#修改main.js
// import '@/styles/index.scss' // global css
import '@/styles' // global css
  1. 测试

    #临时测试,可以模拟语言切换的下拉框  
    #vim resources/src/components/Theme/index.vue
    <template>
      <el-dropdown @command="handleCommand">
      <span class="el-dropdown-link">
        {{ theme }}
      </span>
        <el-dropdown-menu slot="dropdown">
          <el-dropdown-item
            v-for="(val, key) in themes"
            :disabled="val===theme"
            :key="key"
            :command="key">
            {{ val }}
          </el-dropdown-item>
        </el-dropdown-menu>
      </el-dropdown>
    </template>
    
    <script>
      export default {
        name: "Theme",
        data() {
          return {
            themes: {
              light: '白天模式',
              dark: '黑夜模式',
            },
          }
        },
        computed: {
          theme() {
            return this.themes[this.$store.state.settings.theme];
          }
        },
        methods: {
          handleCommand(val) {
            this.$store.dispatch('settings/changeSetting', {
              key: 'theme',
              value: val
            })
            this.$message.success('switch theme success')
            location.reload()
          }
        }
      }
    </script>
    
    <style scoped>
    
    </style>
    
    
    #然后放到 resources/src/layout/components/Navbar.vue
          <theme id="header-theme" class="right-menu-item"/>
    import Theme from "@/components/Theme";
    
    export default {
      components: {
        Breadcrumb,
        Hamburger,
        Languages,
        Theme
      },
    ……
    }
    

    image-20220902111643780

    白天模板

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/596075.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【车载开发系列】Autosar DEM基本概念

【车载开发系列】Autosar DEM基本概念 Autosar DEM基本概念 【车载开发系列】Autosar DEM基本概念一. 诊断事件管理(DEM)概念二. DEM的主要作用1、汽车检修提供数据2、汽车错误状态处理提供依据 三. DEM模块及关联模块关系1. 功能禁止模块FIM2. SWC和BSW3. NvM非易失性存储4. 诊…

分布式存储Ceph介绍及搭建

一&#xff1a;存储的类型 1.单机存储设备 ●DAS&#xff08;直接附加存储&#xff0c;是直接接到计算机的主板总线上去的存储&#xff09; IDE、SATA、SCSI、SAS、USB 接口的磁盘 所谓接口就是一种存储设备驱动下的磁盘设备&#xff0c;提供块级别的存储 ●NAS&#xff08;…

一、docker-compose方式安装运行Jenkins

docker-compose方式安装运行Jenkins 服务器系统&#xff1a;centos 7.6 以docker-compose 编排容器方式安装&#xff0c;当然需提前安装docker-compose环境&#xff08;见百度->docker-compose环境安装&#xff09; docker-compose.yml version: 3.1 services:jenkins:i…

率先领跑!人大金仓布局“数字医疗”护航健康中国

近日&#xff0c;中国医院信息网络大会(CHIMA 2023)在福州圆满结束。作为数据库领域唯一参展企业&#xff0c;人大金仓携一系列“数字医疗”国产数据库解决方案亮相&#xff0c;在激发数据价值&#xff0c;促进数据资源整合利用&#xff0c;确保数据安全使用等方面的突出表现和…

死神来了 | 高铁出轨:“德国的泰坦尼克号事件”

点击文末“阅读原文”即可收听本期节目 剪辑、音频 / 伊姐 运营 / SandLiu 卷圈 封面 / 姝琦Midjourney 监制 / 姝琦 产品统筹 / bobo 场地支持 / 声湃轩天津录音间 德国高铁出轨事故是1998年6月3日发生于德国下萨克森州策勒县艾雪德镇附近的严重铁路事故&#xff0c;造成…

华为OD机试真题B卷 Java 实现【合法IP】,附详细解题思路

一、题目描述 IPV4地址可以用一个32位无符号整数来表示&#xff0c;一般用点分方式来显示&#xff0c;点将IP地址分成4个部分&#xff0c;每个部分为8位&#xff0c;表示成一个无符号整数&#xff08;因此正号不需要出现&#xff09;&#xff0c;如10.137.17.1&#xff0c;是我…

在中文LLaMA模型上进行精调

最近在开源项目ymcui/Chinese-LLaMA-Alpaca的基础上完成了自己的中文模型精调工作&#xff0c;形成了两个工具共享给大家。ymcui/Chinese-LLaMA-Alpaca 构建指令形式的精调文件 如果用于精调&#xff0c;首先要准备精调数据&#xff0c;目标用途如果是问答&#xff0c;需要按…

【下篇】我们邀请了4位专家来探讨消费市场的新增量:W型机会、单客经济、日本市场、DTC......

在4月底的时候&#xff0c;我们举办了一场线上直播活动&#xff0c;有幸邀请到了4位消费零售行业的专家&#xff0c;我本人与他们一起探讨如何寻找市场的新增量&#xff0c;思考品牌如何找到新机会。本篇内容就是将专家们的观点进行了梳理和总结。 接上篇内容&#xff1a; 本篇…

【六·一】就做个纯粹的小小游戏吧

写在前面&#xff1a;博主是一只经过实战开发历练后投身培训事业的“小山猪”&#xff0c;昵称取自动画片《狮子王》中的“彭彭”&#xff0c;总是以乐观、积极的心态对待周边的事物。本人的技术路线从Java全栈工程师一路奔向大数据开发、数据挖掘领域&#xff0c;如今终有小成…

Java学习(maven)——maven新建项目 常用IO工具 Durid数据库工具 案例

引出 如何用maven新建项目&#xff0c;用maven建项目的优势&#xff0c;常用的io工具和durid工具 用Maven建项目 0.Maven配置方式 参考博客 &#xff1a; 【配置】Maven的配置 & Tomcat的配置 & 在IDEA中新建web项目 中的maven配置 1.io流的工具IOUtils/FileUtils…

ROS:一些基本命令行

目录 一、打开小海龟1.1终端&#xff0c;启动ROS Master&#xff1a;1.2终端2&#xff0c;启动小海龟仿真器&#xff1a;1.3终端3&#xff0c;启动海龟控制节点&#xff1a; 二、查看系统中的计算图三、节点命令3.1查看节点下的命令rosnode3.2显示节点列表rosnode list3.3查看节…

【致敬未来的攻城狮计划】打卡1:rasc+keil环境搭建

前言 这回参加的是csdn李肯老师的攻城狮计划&#xff0c;简单说就是我白嫖板子&#xff0c;输出学习笔记。 板子是瑞萨的CPK_RA2E1&#xff0c;还有触摸元件&#xff0c;看起来很有意思hh。 环境搭建 一开始决定采取vscode搭建的方式。后期进行到最后一步——cmake build的时…

多链路传输技术在火山引擎 RTC 的探索和实践

动手点关注 干货不迷路 传统的数据传输方式大多是利用一个链路、选择设备的默认网卡进行传输&#xff0c;使用这种方式实现实时音视频通话时&#xff0c;如果默认网络出现问题&#xff08;如断网、弱网等&#xff09;&#xff0c;用户的通信就会发生中断或者卡顿&#xff0c;影…

chatgpt赋能python:Python倒序函数:让你的列表逆转!

Python倒序函数&#xff1a;让你的列表逆转&#xff01; Python作为一种高级编程语言&#xff0c;代码简洁易学&#xff0c;因此被广泛使用。对于开发者而言&#xff0c;逆转列表&#xff08;list&#xff09;是很常见的需求。Python提供了一个内置函数reverse()来解决这个问题…

前端技术搭建扫雷小游戏(内含源码)

The sand accumulates to form a pagoda ✨ 写在前面✨ 功能介绍✨ 页面搭建✨ 样式设置✨ 逻辑部分 ✨ 写在前面 上周我们实通过前端基础实现了贪吃蛇游戏&#xff0c;今天还是继续按照我们原定的节奏来带领大家完成一个游戏&#xff0c;功能也比较简单简单&#xff0c;也是想…

钉钉斜杠“/”开启邀请测试;用ChatGPT写一个数据采集程序

&#x1f989; AI新闻 &#x1f680; 钉钉斜杠“/”开启邀请测试&#xff0c;AI全面智能化助力企业生产 摘要&#xff1a;钉钉斜杠“/”邀请测试开启&#xff0c;应用于文档、群聊、视频会议、应用开发等场景&#xff0c;为企业用户提供多项AI智能能力&#xff0c;如创作、汇…

【AUTOSAR】Com通讯栈配置说明(五)---- ComM模块

ComM模块 ComMConfigSet ComMChannels ComMBusType&#xff1a;定义总线类型 ComMChannelId&#xff1a;通道号 ComMFullCommRequestNotificationEnabled&#xff1a;未使用 ComMComMGlobalNvmBlockDescriptor&#xff1a;未使用 ComMMainFunctionPeriod&#xff1a;ComM的…

【云原生•监控】mtail轻量日志监控系统

【云原生•监控】mtail轻量日志监控系统 前言 「笔者已经在公有云上搭建了一套临时环境&#xff0c;可以先登录体验下&#xff1a;」 http://124.222.45.207:17000/login 账号&#xff1a;root/root.2020 简介 「可观测性平台三大支柱&#xff1a;日志监控、调用链监控和度量指…

2023年05月小结

5月一晃即将过去&#xff0c;先看看5月份都写了哪些文章&#xff1a; 往期推荐 国内手机号如何注册Google账号 Python中的布尔类型以及布尔值介绍 Python中深拷贝与浅拷贝介绍 Python中的集合介绍 Python中的字典学习笔记 Python学习历程-元组的基本操作回顾 记录我的Python学习…

初学prometheus监控(一)

初学prometheus监控(一) 1、promethues 介绍 1.1 监控的分类 监控重要性由高到低 业务监控&#xff1a;公司领导比较关心的指标&#xff0c;如电商平台的订单数量&#xff0c;用户的日活等系统监控&#xff1a;主要是跟操作系统相关的基本监控项&#xff0c;比如CPU,内存&#…