前端皮肤功能实现(基于Less)

1.核心思想

(1)在html根元素上设置theme属性(随意名字),切换主题就是切换属性值

(2)将公共的css提取出来,使用less的混入

 

2.具体代码

(1)html设置

<html lang="" theme="default">

(2)js控制切换主题

document.getElementsByTagName('html')[0].setAttribute('theme', themeData)

(3)less样式设置

.theme-function(@topImg, @linearGradient1, @linearGradient2){
    .view-main {
		.el-menu {
			background-color: rgb(60, 78, 90);

			.el-submenu__title {
				background-image: linear-gradient(@linearGradient1, @linearGradient2);
				color: #FFFFFF;

				& i {
					color: #FFFFFF;
				}
			}

			.submenu .el-submenu__title {
				background-color: rgb(60, 78, 90);
                background-image: none;
			}

			.submenu .el-submenu__title:hover,
			.submenu.is-opened .el-submenu__title,
			.submenu.is-active .el-submenu__title {
				background-color: rgb(45, 104, 144);
			}

			.el-menu-item,
			.el-icon-arrow-down:before {
				color: #FFFFFF;
				user-select: none;
			}

			.is-active,
			.el-menu-item:hover {
				background-color: rgb(216, 242, 255);
				color: rgb(0, 50, 77);
			}
		}

		&-top {
			background-image: @topImg;
		}

		&-bottom {
			&-left {
				background-color: rgb(60, 78, 90);
			}
			&-right {
				&-top {
					&-main {
						&>div {
							background-color: rgb(248, 248, 248);
						}
						.active-route span {
							color: rgb(39, 159, 220);
						}
					}
				}

				&-main {
					background-color: rgb(233, 233, 233);
					// &>div {
					// 	background-color: #FFFFFF;
					// }
				}

				&-bottom {
					background-color: #e9e9e9;
				}
			}
		}

	}

}

html[theme="default"] {
    .theme-function(url('../../assets/public/theme/icon_daohangtiao.png'),#43bdfa, #248acd);
}

html[theme="yellow"] {
    .theme-function(url('../../assets/public/theme/icon_daohangtiao2.png'),#d8fa43, #cdca24);
}

html[theme="green"] {
    .theme-function(url('../../assets/public/theme/icon_daohangtiao3.png'),#43fa4c, #32cd24);
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值