vue+iview+less 实现一键换肤

一个基于在线切换和自定义的实现的换肤研究和实现 一个基于在线切换和自定义的实现的换肤研究和实现 前言 市面上有好多在线切换主题的方式,但是我个人感觉不是那么的完美,感觉有实现上只是表面的上一些简单的变化,都是借助webpack + less/scss的实现。最近在做UI组件库的一些事情,对在线换肤的一点方式实现,一下只是个人的一点想法,仅仅只代表个人。 市面上的分析 可供选择的换肤 这种方式限制性太强,也就是针对性,在产品发布之前定义好几套主题,然后打包到生产环境中,想要超出之外要么重新定制一套出来,之后打包发布,很麻烦!Element-UI上 阅读详情

传送门:Less 快速入门

1. 准备两个less文件:

1.1 theme.less 用于定义控制样式的函数

.theme(
	@Background: #1D2B40,
    @Border: #000017,
){
	.header{
        background: @Background;
        border-bottom: 1px solid @Border;
    }
}

2.2 color.less 用于调用函数传值

@import url('./theme.less');

/* 黑色主题(默认主题) */
.theme_default {
    .theme()
}

/* 蓝色主题(传入要更换的颜色) */
.theme_blue{
	 .theme(
		@Background: #377DFF,
    	@Border: #0167DF,
	)
}

2. 在main.js导入color.less 作为全局样式:

import './less/color.less';

3.添加点击换肤的事件:

<DropdownMenu slot="list" >
	<DropdownItem @click.native="changeTheme('theme_default')">黑色风格</DropdownItem>
	<DropdownItem @click.native="changeTheme('theme_blue')">蓝色风格</DropdownItem>
</DropdownMenu>

//点击换肤事件
changeTheme(theme){
	//给body添加class名,并将该class保存到localstorage中
    document.body.className = theme;
    localStorage.setItem('themeColor', theme);
    //把当前主题值传到其他组件...
    //areaUtil.$emit('changeThemes', theme);
}

4. 在index.html文件里给body初始化的时候添加class:

<script>
    var bodyClass = localStorage.getItem('themeColor') ? localStorage.getItem('themeColor') : 'theme_default';
    document.body.className = bodyClass;
</script>

优点:易于理解,快速上手开发
缺点:需要把组件中需要换颜色或图标的样式单独拎出来写,不方便维护,因此应该注意变量名语义化、多写注释

vue+iview+less 实现换肤功能 项目搭建用的vue—cli,css框架选择的iview 1、首先安装less支持 npm install --save-dev less-loader less 然后去build文件夹下的webpack.base.conf.js文件中,添加对.less的支持 2、准备工作做好了,开始换肤 2.1新建一个文件夹styles,在里面新建一个文件theme.less 定义一个.theme()方法,写上需要的颜色参数如图: 2.2 styles文件夹下再新建一个存放各类主题的color.less文件,里面根据自己需求定义各类主题,记得把theme.less文件引入 @import url('. 立即下载

相关推荐

Mac上MySQL出现secure-file-priv为null

在使用MySQL导入导出文件时出现了错误,原因是没有配置secure-file-priv。 我的MySQL版本是8.0.13,使用如下命令查看secure-file-priv。 结果发现secure-file-priv为空,此时需要为它配置一个文件夹。 解决方案: 1)到MySQL的安装目录中去,Mac中是的是 /usr/local/mysql/support-files,该目录下有一...

zhangvalue的博客 5883

iview 自定义主题样式

官方地址http://v1.iviewui.com/docs/guide/theme 官方提供了两种方法: 变量覆盖 使用安装工具修改 变量覆盖 在项目中创建一个my-theme文件夹,在该文件夹中创建index.less文件 在index.less文件中写入@import ‘~iview/src/styles/index.less’; 然后将https://github.com/iview/iview/blob/master/src/styles/custom.less 中的默认样式变量复制进来

晴天有点孤单 1803

地图可视化类型大全

地图可视化类型大全: 散点地图 网格地图 聚合地图 气泡地图 热力图 Choropleth地图/分级设色地图/分级区域地图/着色地图/分级统计地图(百度百科这样翻译)/等值域地图/分段设色地图 Cartogram地图/变形地图/示意地图 规则形状地图 /RecMap/Demers Cartogram/瓷砖网格地图/DorlingMap 流型图(Flow Map)\流线图\流向图\轨迹地图 复合地图

codeuniverse的博客 3532

vue+less 实现主题快速切换(换肤),无js简单好理解

vue+less实现快速切换主题/换肤,通过改变标签属性的属性值来切换主题,无需其它js操作,操作简单好理解

zawami的博客 1506

让Claude连续写代码24小时会发生什么?揭秘长时运行”架构背后的工程逻辑与未来

AI长时运行实验揭示软件开发新范式 Claude Opus通过Harness框架24小时独立开发全栈应用的成功实验,展示了AI从辅助工具向异步协作者的进化。实验采用"上下文轮转"机制解决记忆管理难题,将任务拆解为微周期并通过文件系统同步进度。核心突破在于:1)TDD成为AI自治基石,200+测试用例确保开发不偏航;2)文件取代对话成为AI间高效沟通介质;3)开发者角色重构为需求定义和框架设计者。该实验证明,通过严谨的架构约束和验收标准,AI可完成复杂长周期任务,预示着软件开发将从手工作坊

老孙 | Ethan Sun 的博客:AI 智能体与 AI 原生软件的工程实践 1091

从零构建PEMFC仿真模型:MATLAB/Simulink中的模块化拆解与系统集成

本文详细介绍了如何在MATLAB/Simulink环境中从零构建质子交换膜燃料电池(PEMFC)仿真模型,包括电化学模型、气体供应系统和热管理系统的模块化实现。通过多物理场耦合技巧和系统集成策略,帮助工程师和研究者高效开发PEMFC控制策略,优化性能并实现实时仿真。

weixin_29294975的博客 360

vue实现换肤功能

elementui+less实现换肤功能效果图 iview+scss实现换肤功能效果图 一:用elementui+less实现换肤功能 1.新建color.less文件和theme.less文件,放置到assets/less文件夹中 2.color.less文件文件代码如下: @import url('./theme.less'); .themea { .theme();//默认的样式 } .t...

memory_zzz的博客 1594

熵编码(五)-CABAC(一) 基础篇

前两篇算术编码文章介绍了算术编码原理和步骤。本篇文章介绍CABAC,基于上下文自适应的二进制算术编码。本文对CABAC的基本原理进行了详细的介绍和分析,下篇文章将会对H264编码中的CABAC熵编码的实际应用进行介绍。

尹佑壮的博客 3880

php如何直接使用iview,vue和iview以及less如何实现换肤的功能(附代码)

本篇文章给大家带来的内容是关于vue和iview以及less如何实现换肤的功能(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。项目搭建用的vue—cli,css框架选择的iview1、首先安装less支持npm install --save-dev less-loader less然后去build文件夹下的webpack.base.conf.js文件中,添加对.less的...

weixin_39974932的博客 168

PX4|Gazebo模型加载失败排查指南:从环境变量到资源路径的全面解析

本文针对PX4与Gazebo联合仿真中常见的'Unable to get model name'错误,提供了从环境变量配置、资源路径排查到网络访问问题的全面解决方案。详细解析了GZ_SIM_RESOURCE_PATH等关键变量的作用与设置方法,并给出了离线模型库部署等一劳永逸的修复指南,帮助开发者彻底解决无人机模型加载失败问题。

weixin_29243063的博客 1228

《测控仪器设计课后习题答案-浦昭邦-王宝光

《测控仪器设计课后习题答案-浦昭邦-王宝光 1.1. 测控仪器的概念是什么? 测控仪器则是利用测量和控制的理论,采用机、电、光各种计量测试原理及控制系统与计算机相结合的一种范围广泛的测量仪器。 1.2. 为什么说测控仪器的发展与科学技术发展密切相关? 仪器仪表的用途和重要性— 遍及国民经济各个部门,深入到人民生活的各个角落,仪器仪表中的计量测试仪器与控制仪器统称为测控仪器,可以说测控仪器的水平是科学技术现代化的重要标志。 仪器仪表的用途: 在机械制造业中:对产品的静态与动态性能测试;加工过程的控制与监测;设

无名何许人的博客 2976

vue 引入iview3.x使用less更换主题的过程报错解决

说明:换肤报错 Inline JavaScript is not enabled. Is it set in your options? 解决方案如下: 1、按照iview官方的文档定制主题,webpack编译时会有个坑,下面简述一下主要过程 npm install iview –save  npm install less –save  npm install less-loader...

neal 3842

从泛光成像到可寻址扫描:Flash激光雷达的车规级优势与技术演进

Flash激光雷达凭借固态架构优势成为自动驾驶感知技术的重要发展方向。该方案无机械部件,具备抗振动、长寿命等特点,同时CMOS工艺带来显著成本优势。但传统泛光式存在能量弥散问题,难以兼顾大视场和远距离探测。可寻址扫描技术通过分区点亮VCSEL阵列,有效提升局部能量密度,在保持固态可靠性的同时突破性能瓶颈。这种"电子扫描+分区点亮"的混合架构,使Flash激光雷达有望实现大视场、远距离、高可靠和低成本的多重突破,推动自动驾驶技术发展。

致力于lidar应用开发 233

使用vue + less 实现简单换肤功能

转载: 使用vue + less 实现简单换肤功能

jokren的博客 613

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

vue+iview 实现项目中一件切换主题

<Button @click="changetheme(0,$event)" type="primary">主题</Button> <Button @click="changetheme(1,$event)" type="primary">主题</Button> <Button @click="changetheme(2,$event)" t...

lotte 3064

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

前端组件库自定义主题切换探索-01-方案借鉴与思路参考

前端组件库自定义主题切换探索-01-方案借鉴与思路参考

baidu_33164415的博客 1448

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

看电视剧《鸡毛飞上天》有感

看电视剧《鸡毛飞上天》有感 文章目录看电视剧《鸡毛飞上天》有感经商秘籍男女之间相处之道 经商秘籍 走四方,开四门,进四出六 自己挣100块钱,想着给别人赚60元 经商,心里永远不要存在侥幸 没规矩的人,越聪明越危险。 **划行规市:**把相同的货放到一起,方便相互监督、相互串货。 商,无信不立 一分钱饿死人,一毛钱撑死人 做生意不能意气做事 大光,人有缺点和优点,要充分利用他的优点,尽量不要让缺点暴露出来 男女之间相处之道 女人要多哄着 ...

小哈力----一个小前端工程师 377

less合集(二):动态修改主题颜色一键换肤

需求背景: 1:在需求中,一个平台样式风格基本保持统一;因而需设置一个全局样式配置 2:有时需要可以根据后端数据返回,动态修改主题颜色 方式一 适用技术:css,less,sass等 适用场景:颜色种类不固定的场景 1:在index.html文件中增加配置 <script> window.onload = () => { // 设置主题色 // --buttonColor是自定义的按钮背景样式代号 // 可动态修改,eg:由后端返回接受,可由前端事件修改.

hyduan_h5的博客 5801

iview 开发--换肤

根据 iview 官网 推荐 ,我们也推荐使用变量覆盖 的方式来修改主题 官网的使用手册就不赘述了 说一说使用中遇到的情况 在使用中,按照说明引入以后,发现项目报错 这个报错,让你执行命令npm install --save , 执行过后,发现还是报错 原因:可能是你的项目没有安装 less 和 处理 less 的 less-loader 有了原因,才能解决,盘他~ ...

xiao_yu_liu的博客 1435

vue实现一键换肤

页面分格色调看腻了?想要实现一键换肤? 应公司要求,要求实现网站页面一键换肤,这么炫酷无理的要求让我无法拒绝! 自己研究了2天,用2种方法实现了一键换肤: 给 App 定义一个 class 如 .dark 或 .bright,然后定义 2 套 css/less 样式,2 套样式分别放在 .dark 或 .bright 下,如下所示: // dark-mode.less 文件 .dark { .xxx { backgroud: #ccc; ...

sinat_14834795的博客 795

vue + less 实现动态主题换肤功能

vue + less 实现动态主题换肤功能

weixin_44784401的博客 3944

vue+webview+less 实现夜间模式换肤功能

第一步 建立less文件 第二步: 在less中加入代码 第三部:解析代码 1、动态添加.test-dark 类名,触发styleChange()函数 这里我把类名写死,方便测试 2、注意 如果我想要改变头部 .Header-noOpen 背景色 那么注意要在styleChange中改变 个人记录总结,勿喷哈哈哈哈哈 ...

timebeign的博客 3110
上一篇: JS 中call()和apply()以及bind()的用法与区别
下一篇: vue 引入字体文件
hst❀
博客等级 码龄8年 2364粉丝 147原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值