HeyUI组件库 | 如何实现在线切换主题

栏目: CSS · 发布时间: 7年前

内容简介:目前ant-design支持的切换主题颜色是在页面最下方。是的,如果你不仔细,你是不知道系统有这个功能的。然后这里要吐槽一个点,随便切换什么颜色都很卡,因为没有确认按钮,所以随便调一个小颜色,也会去后端请求,值得改进....

目前ant-design支持的切换主题颜色是在页面最下方。

是的,如果你不仔细,你是不知道系统有这个功能的。

然后这里要吐槽一个点,随便切换什么颜色都很卡,因为没有确认按钮,所以随便调一个小颜色,也会去后端请求,值得改进....

ant-design使用的less,和HeyUI是一致的,并且也提供全局less变量定义功能,和Hey-Cli的globalVars也是差不多的功能。

至于具体实现,我在后面细说。

HeyUI组件库 | 如何实现在线切换主题

Element

其实饿了么的切换主题色的功能是很明显的,就在主页上方位置。

切换颜色的交互我要狠狠的夸赞一番,有确认按钮,切换顺畅,一比较立竿见影。

然后饿了么使用的是scss,其实都差不多的,因为主要功能大致都是差不多的。

HeyUI组件库 | 如何实现在线切换主题

HeyUI

HeyUI组件库是在11月刚刚把切换主题的功能上线的。

当然,系统中配置主题,我们一直是支持的,只是一直没有尝试实现官网切换主题的功能。

基于官网上次的改版,有人建议把下面四个颜色块当做切换主题色的入口,我觉得挺好,于是抽空来实现了一下。

戳我去官网试试

HeyUI组件库 | 如何实现在线切换主题

实现方案

首先,ant-design和element是需要后端服务的,考虑到我想要的效果,我觉得改成固定4个主题方案,这样就可以免了后端的服务。

关于HeyUI切换主题的方案有两套,由于需要直接转换成css,所以选择第二套方案:替换var.less中的变量定义。

具体参考文档:更换主题

@import (less) "~heyui/themes/var.less";
//重新定义主题
@primary-color: #FDA729;
@red-color: #D64244;
@green-color: #3cb357;
@yellow-color: #EAC12C;
@blue-color: #77A2DC;
@import (less) "~heyui/themes/common.less";

//使用这种方式引用,可以在自己的less文件中使用var.less定义的变量。
@import (less) "自己的less文件";
复制代码

开发步骤

1、提取系统的less文件

官网系统之前只有一套主题,所以官网系统只有一个独立的doc.less文件。

现在要生成4套主题,所以系统的样式需要独立出来。

- doc.less
- index.less
- var.less
复制代码

index.less作为系统默认的主题,doc.less是系统中定义的样式。

2、定义四套主题

如下所示,在doc中新建themes文件夹,保存四套主题。

HeyUI组件库 | 如何实现在线切换主题

主题的大致内容就是定义样式变量,引用系统中的less文件。

以yellow中的index.less为例:

@import (less) "../../../themes/var.less";

// Color
@primary-color : #b6cf4d;
@link-color : @primary-color;
@blue-color : #356ba8; //info
@green-color : #378c2b; //success
@yellow-color : #aa9f30; //warn
@red-color : #8c2b3a; //error

@input-height: 32px;

@import (less) "../../../themes/common.less";
@import (less) "../../css/doc.less";

复制代码

3、生成四套主题css文件

由于四套主题都是需要异步加载的,所以需要先编译成css文件。

这一点和ant-design以及element不一样,他们都是使用后端实时生成css文件,但是大致的逻辑是一致的。

新建命令文件gencss.sh ,并且执行:

lessc ./doc/themes/yellow/index.less>./doc/themes/yellow/index.css -x -rp=https://cdn.jsdelivr.net/npm/heyui/themes/fonts/
lessc ./doc/themes/red/index.less>./doc/themes/red/index.css -x -rp=https://cdn.jsdelivr.net/npm/heyui/themes/fonts/
lessc ./doc/themes/pink/index.less>./doc/themes/pink/index.css -x -rp=https://cdn.jsdelivr.net/npm/heyui/themes/fonts/
lessc ./doc/themes/lavender/index.less>./doc/themes/lavender/index.css -x -rp=https://cdn.jsdelivr.net/npm/heyui/themes/fonts/
复制代码

4、Js调用切换css调用

在首页的方法中添加css的调用方法。

dynamicLoadCss(type) {
  let old = document.getElementById('loadcss');
  var head = document.getElementsByTagName('head')[0];
  var link = document.createElement('link');
  link.type='text/css';
  link.rel = 'stylesheet';
  link.href = `/themes/${type}/index.css`;
  link.id = 'loadcss';
  head.appendChild(link);
  // delete old link
  if(old) {
    head.removeChild(old);
  }
}
复制代码

至此,在线切换主题色的开发就完成了。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

算法设计与应用

算法设计与应用

迈克尔 T. 古德里奇(Michael T. Goodrich)、罗伯特·塔马契亚(Roberto Tamas / 乔海燕、李悫炜、王烁程 / 机械工业出版社 / 2017-11-20 / CNY 139.00

本书全面系统地介绍算法设计和算法应用的各个领域,内容涵盖经典数据结构、经典算法、算法分析方法、算法设计方法以及算法在各个领域的应用,还包含一些高级主题。本书采用应用驱动的方法引入各章内容,内容编排清晰合理,讲解由浅入深。此外,各章都附有巩固练习、创新练习和应用练习三种类型的题目,为读者理解和掌握算法设计和应用提供了很好的素材。 本书可作为高等院校计算机及相关专业“数据结构和算法”课程的本科生......一起来看看 《算法设计与应用》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码