美文网首页
切换主题功能初尝试

切换主题功能初尝试

作者: 韭菜的故事 | 来源:发表于2021-10-03 11:37 被阅读0次

近期的项目有一个切换主题的需求,其实这个功能我很早就想研究一下了,只是没有项目驱动一直懒得动,这次就借工作当中的项目趟了一遍河。切换主题主要分为三个方面:1.element等UI库的主题切换。2.echarts的主题切换。3.自己写的样式实现主题切换。下面就一一说明实现过程。

element主题切换

1. 统一处理

前往在线主题生成工具编辑好主题然后导出。然后使用gulp完成类名前缀批量添加,通过切换body上的对应的class名来实现主题切换。

gulp的使用
a>安装3个插件 npm i gulp gulp-clean-css gulp-css-wrap -D
b>在项目根目录中新建一个gulpfile.js文件
c>解压element主题压缩文件至特定位置并执行gulp
我项目中的gulp配置文件

const path = require('path');
const gulp = require('gulp');
const cleanCSS = require('gulp-clean-css');
const cssWrap = require('gulp-css-wrap');

// 新增的主题需要修改此处的样式名,并与项目中切换主题操作的地方对应
const customThemeName = '.theme-green';

gulp.task('default', function() {
  // 源文件路径  直接将style.zip解压到此文件夹即可
  return gulp.src( path.resolve('./xxxxx'))
    .pipe(cssWrap({ selector: customThemeName }))
    .pipe(cleanCSS())
    // 目标文件路径 注意将生成的index.css修改为项目中使用的名字
    .pipe(gulp.dest('./xxxx'));
});

执行完gulp命令之后可以发现主题css中已经添加了设置好的类名,剩下的就是切换主题时对body标签进行dom操作切换class了


修改好的element主题css文件

执行gulp命令提示禁止运行脚本解决办法(win平台)

1> 使用管理员身份运行 PowerShell
2> 输入 set-executionpolicy remotesigned 输入 y 确认

2. 特殊样式处理

由于element主题工具的局限性,有些element的样式我们需要单独写文件处理(比如渐变色)这部分的内容和一般项目中覆盖默认样式的处理没有太大的区别。


注意body类名要对应

echarts主题切换

  1. 前往 官方主题编辑器 编辑完成之后下载主题-选js然后将文件放入项目中 注意修改主题名称(由于我使用的是vue-echarts所以主题js文件引入后可以直接使用,使用echarts可以自行参考官网上的使用方法)
  2. 点击“导出配置”将导出的json文件放入项目中 (修改主题时上传用)

echarts主题的缺陷和element差不多——不支持渐变色,因此我为了省事直接在下载好的js文件中修改了color的值,这也导致后续要修改主题有点麻烦,不过我想echarts的主题也不会怎么改了,另一方面我也在项目中写好了说明文档。

普通样式的主题切换

其实这一部分可以和element的第二部分一样写在一个统一的类名下通过切换body的class来实现,不过当时我在实现这一块的时候脑海中一直在提醒我曾经看过的一篇张鑫旭老师的文章,于是我采取了他的方法——通过切换link标签——来实现这一部分的效果,现在回想这个项目会显得有点乱了。实现步骤他的文章里都有说,这里就不赘述了,值得注意的是我们在vue项目中因为修改的是public中的文件,所以不能写相对路径 仿照ico图标的写法即可href="<%= BASE_URL %>static/css/default.css"

后记

根据设计稿做项目时发现了一个悲催的事情,element的主题颜色不支持不透明度,而echarts的主题支持不透明度但是不支持渐变......最终element的主题就用了个主题色,其它的颜色基本都在公共样式中修改了,echarts还好,由于它本身的color属性支持渐变,所以可以直接修改从网站导出的文件里面的color属性。

参考内容

  1. gulp 批量添加类名 在一个任务中使用多个文件来源
  2. link rel=alternate网站换肤功能最佳实现

相关文章

  • 切换主题功能初尝试

    近期的项目有一个切换主题的需求,其实这个功能我很早就想研究一下了,只是没有项目驱动一直懒得动,这次就借工作当中的项...

  • 换肤

    Android主题切换(Theme)实现日夜间功能

  • 使用Sass实现主题切换

    主题切换大概想到以及找到的有以下几种方式: DWZ富客户端框架主题切换功能 实现方式: 将不同主题的样式抽取出来。...

  • 滑动切换视频功能的尝试

    最近版本迭代中的需求里有这么一条:视频详情页面,页面上下滑实现视频上一个/下一个的切换 拿到这个需求,我的思路有大...

  • iOS 动态更换App图标

    该功能应用的场景 1、白天/夜间模式切换,在切换App主色调同时切换App图标。 2、各类皮肤主题(淘宝就可换肤)...

  • Android 实现切换主题皮肤功能

    简介 正文 首先我们先来做个简单的一键切换主题的功能。查看代码如下: 但是这种情况下呢,一键切换皮肤,app需要退...

  • 【转载】vue 切换主题(换肤)功能

    原文链接:https://www.cnblogs.com/Ares0023/p/14000069.html[htt...

  • 小说阅读器的设计和实现

    一、阅读器整体设计 阅读器的基本功能是文字展示、翻页滚动,以及目录展示、进度切换、调整字号和主题切换等,扩展功能包...

  • iOS换肤功能的简单处理框架

    换肤功能是在APP开发过程中遇到的比较多的场景,为了提供更好的用户体验,许多APP会为用户提供切换主题的功能。主题...

  • iOS 多主题切换-Swift 实现

    项目来由 工作项目中,产品需要给 APP 加上主题切换,也就是通常黑夜白天切换功能。本着不重复制造轮子的想法,第一...

网友评论

      本文标题:切换主题功能初尝试

      本文链接:https://www.haomeiwen.com/subject/rtmvnltx.html