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

5 篇文章 0 订阅
4 篇文章 0 订阅

vue+less 主题

表现形式

在这里插入图片描述

插件

npm i style-resources-loader vue-cli-plugin-style-resources-loader -D

vue.config.js

使theme.less里的less变量全局可用

const path=require("path");
module.export={
    /** 全局less变量 */
    pluginOptions: {
        "style-resources-loader": {
            preProcessor: "less",
            patterns: [path.resolve(__dirname, "./src/assets/theme/theme.less")],
        },
    },
}

index.css

将主题设置存放在**.css**文件中,注意不是.less,防止预编译产生重复类

[data-theme="default"]{
    --testColor:pink;
    --testImg:url("~@/images/pic.png");
    --el_button:red !important;
}
[data-theme="primary"]{
    --testColor:#fff;
    --otherStyle:#000;
}

main.js中全局引入该文件

import "@/assets/theme/index.css";

theme.less

@img_base:"~@/assets/images";//图片路径
/** 主题设置 */

/** 封装样式 */
.list{
    width:100%;
	color:var(--testColor);
    background:var(--testImg);
}

使用主题p.q

  1. 添加动态属性:data-theme

    <div :data-theme="theme" class="app">
    	<div class="child" @click="event"></div>
    </div>
    
  2. 控制参数改变主题

    export default{
        data(){
    		return {
    			theme:"default",
            }
        },
        methods:{
            /** 点击更改主题 */
    		event(){
    			this.theme="primary";
            }
        }
    }
    
  3. 配置主题属性

    .app{
        background:var(--otherStyle);//引用主题样式
        .child{//子类也能用
            .list();//引用封装主题样式
        }
    }
    
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值