elementPlus修改主题色以及皮肤设置思路

目录
  • elementPlus修改主题色以及皮肤设置
    • 修改主题色
    • 系统皮肤
  • elementPlus修改主题颜色(含暗夜模式切换)
  • 总结

elementPlus修改主题色以及皮肤设置

修改主题色

<el-color-picker style=“margin-top:20px” v-model=“systeamColor” @change=“colorChange” />

采用element颜色选择的组件

// 变量前缀
colorChange(e) {
    // e就是选择了的颜色
    const pre = "--el-color-primary";
    // 白色混合色
    const mixWhite = "#ffffff";
    // 黑色混合色
    const mixBlack = "#000000";
    const el = document.documentElement;
    el.style.setProperty(pre, e);
    // 这里是覆盖原有颜色的核心代码
    for (let i = 1; i < 10; i += 1) {
      el.style.setProperty(`${pre}-light-${i}`, mix(e, mixWhite, i * 0.1));
    }
    el.style.setProperty("--el-color-primary-dark", mix(e, mixBlack, 0.1));
}

系统皮肤

通过提前定义好各种皮肤风格

通过vue的store以及localStorage去动态修改

同时代码中要使用变量方式引入store中的主题颜色

elementPlus修改主题颜色(含暗夜模式切换)

直接调用 setThemeColor(color) 函数,color 为传入的主题颜色

export function setThemeColor(color) {
  const el = document.documentElement;
  const body = document.querySelector("body");
  // const nprogress = document.querySelector("#nprogress .bar");
  // console.log(nprogress)
  el.style.setProperty("--el-color-primary", color);
  body.style.setProperty("--van-primary-color", color);
  // nprogress.style.setProperty("background", color);
  // 此行判断是否为白天/暗夜模式,可根据自身业务调整代码
  let mixColor = Store.state.settings.sideTheme.split("-")[1] === "light" ? "#ffffff" : "#000000";
  // 此行判断是否为白天/暗夜模式,可根据自身业务调整代码
  for (let i = 1; i < 10; i++) {
    el.style.setProperty(`--el-color-primary-light-${i}`, colourBlend(color, mixColor, i / 10));
    el.style.setProperty(`--el-color-primary-dark-${i}`, colourBlend(color, mixColor, i / 10));
  }
  el.style.setProperty(`--el-color-primary-dark-2`, colourBlend(color, mixColor, 0.2));

}

export function colourBlend(c1, c2, ratio) {
  ratio = Math.max(Math.min(Number(ratio), 1), 0)
  let r1 = parseInt(c1.substring(1, 3), 16)
  let g1 = parseInt(c1.substring(3, 5), 16)
  let b1 = parseInt(c1.substring(5, 7), 16)
  let r2 = parseInt(c2.substring(1, 3), 16)
  let g2 = parseInt(c2.substring(3, 5), 16)
  let b2 = parseInt(c2.substring(5, 7), 16)
  let r = Math.round(r1 * (1 - ratio) + r2 * ratio)
  let g = Math.round(g1 * (1 - ratio) + g2 * ratio)
  let b = Math.round(b1 * (1 - ratio) + b2 * ratio)
  r = ('0' + (r || 0).toString(16)).slice(-2)
  g = ('0' + (g || 0).toString(16)).slice(-2)
  b = ('0' + (b || 0).toString(16)).slice(-2)
  return '#' + r + g + b
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Vue+ElementUI实现动态更换任意主题色(动态换肤)的全过程

    目录 前言 vue-element-admin 官方实现的方式 参考文档: webpack-theme-color-replacer 插件的实现方式 总结 前言 最近基于 ElementUI 的项目上需要实现动态换肤的功能,这里提供两种方式: vue-element-admin 官方实现的方式 webpack-theme-color-replacer 插件的实现方式 vue-element-admin 官方实现的方式 简单说明一下它的原理: element-ui 2.0 版本之后所有的样式都是基

  • vue-element换肤所有主题色和基础色均可实现自主配置

    目录 element换肤所有主题色和基础色均可自主配置 最终方案 以下是所有代码 总结 element换肤所有主题色和基础色均可自主配置 1.element-ui官方提供的动态切换主题方法换肤 但此方法只可修改$–color-primary 这一个主题色及其衍生色 2. 获取element-ui的theme-chalk/index.css文件,找到基础色所对应的颜色值,抽取颜色值进行替换,此种方法无法自动生成衍生色 { '#67C23A': theme.color_success, '#E6A2

  • ant-design-pro使用qiankun微服务配置动态主题色的问题

    使用微服务后,遇到一个问题,主应用和子应用的主题色不一致.希望可以通过主应用的颜色动态变换子应用的主题色ant-design-pro可以通过config.ts配置全局主题色所有最优的方法是可以通过改变主题色,来动态配置.官方最新版本的https://github.com/ant-design/ant-design-pro/releases/tag/v5.2.0已经支持了,通过<SettingDrawer>设置之前的版本不支持直接修改主题色.但是ant-design支持全局修改组件颜色跟着官方的

  • Java的Struts框架中的主题模板和国际化设置

    主题模板 如果不指定一个主题,然后Struts2中会使用默认的XHTML主题.例如Struts 2中选择标签: <s:textfield name="name" label="Name" /> 生成HTML标记: <tr> <td class="tdLabel"> <label for="empinfo_name" class="label">Name:<

  • vue如何根据网站路由判断页面主题色详解

    前言 本文主要介绍的是vue根据网站路由判断页面主题色的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 需求: 不同品牌对应不同版本配色 做法: 根据域名带的参数判断进入哪个品牌,对应哪个版本 在main.js中 import Vue from 'vue' import App from './App' import router from './router' import axios from 'axios' import MintUI from 'mint-ui'

  • vue在线动态切换主题色方案

    主要原理是利用webpack插件webpack-theme-color-replacer提取相关颜色css然后根据配置动态生成替换的css 具体实现步骤如下: 1.添加webpack插件,新建文件webpack/themePlugin.js const ThemeColorReplacer = require('webpack-theme-color-replacer') const forElementUI = require('webpack-theme-color-replacer/for

  • 基于Python实现图片主题色的提取

    目录 前言 实现流程 安装依赖 提取主题色 测试 前言 在 Groove 音乐中,当我们改变歌曲时,底部播放栏的颜色会随专辑封面而变,比如下图中播放栏的颜色变成了 aiko 衣服的颜色.下面我们会在 python 中实现相同的效果,也就是提取出图片中的主题色. 实现流程 安装依赖 提取主题色有很多方法,比如使用 k-means 聚类,选出 k 个 RGB 坐标的聚类中心,但是速度会差一些,我们这里换成中位切分法.已经有人为我们实现好这个算法了,我们可以拿来就用. pip install colo

  • php readfile()修改文件上传大小设置

    使用PHP ZipArchive生成的压缩包,小的压缩包都能下载,今天遇到个150M以上的就报404错误,第一想到的就是文件大小超出了PHP默认设置,修改方法有两个: php.ini:memory_limit memory_limit是设置内存限制的,如果使用readfile()读取文件就会和这个有关,直接修改这个值保存后重启php-fpm即可. php 下载文件大小设置PHP memory_limit = 128M 最后记得:service php-fpm restart ini_set PH

  • Android应用动态修改主题的方法示例

    1.使用API设置主题 如下所示,在Activity中使用setTheme setTheme(R.style.MyTheme1); 2.调用API的时机 需要在super.onCreate(savedInstanceState)之前调用setTheme 3.重新设置主题 要重新设置主题,则需要结束Activity,重新启动才可以 public class MainActivity extends Activity { private TextView tv; @Override protecte

  • jquery修改属性值实例代码(设置属性值)

    设置属性 - attr() jQuery attr() 方法也用于设置/改变属性值. 下面的例子演示如何改变(设置)链接中 href 属性的值: 实例 复制代码 代码如下: $("button").click(function(){$("#keleyi").attr("href","http://www.jb51.net");}); attr() 方法也允许您同时设置多个属性.下面的例子演示如何同时设置 href 和 titl

  • 修改易语言界面皮肤的方法

    为你家的e语言添加一个漂亮的皮肤吧[一行代码而已] 新建一个E语言程序.[动态数据链接库] 把_启动子程序 设定为公开 里面写上 加载皮肤 这个命令 [需要模块 .自己论坛找找] 在编译的时候..软件名改为SXS.DLL即可 然后放到易语言目录 此方法支持N种工具 游戏 同时还是一个很好的注入方法哦..自动注入的.

  • flex中使用css样式修改TextArea滚动条的皮肤代码

    复制代码 代码如下: <mx:script> <![CDATA[ ........ var contentTextArea = new TextArea(); contentTextArea.setStyle("verticalScrollBarStyleName","mytextAreaStyle"); ........ ]]> </mx:Script> <mx:Style> .mytextAreaStyle{ /*

随机推荐