前端利用scss实现一键换肤功能

本文介绍了如何使用 Scss 实现前端一键换肤功能,通过提取颜色变量,结合 Vue 的 data-theme 变量,实现主题切换。同时,讲解了在颜色众多时如何封装函数,以及Sass的@each循环和map-get函数的用法,帮助完成样式动态切换。
摘要由CSDN通过智能技术生成

1.要实现系统的一键换肤功能,首先要将颜色作为变量提取出来,并为两种主题配置颜色

variables.scss

//浅色主题
$light-theme: (
        base-color: #000,
        background-color: #ccc
);

//深色主题
$dark-theme: (
        base-color: #fff,
        background-color: #000
);

//定义映射集合
$themes: (
        light-theme: $light-theme,
        dark-theme: $dark-theme
);


//获取颜色并为当前主题色配置颜色
//字体颜色
@mixin base-color() {
  @each $theme-name, $theme in $themes {
    [data-theme = '#{$theme-name}'] & {
      color: map-get($map: $theme, $key: base-color);
    }
  }
}

//背景色
@mixin base-background() {
  @each $theme-name, $theme in $themes {
    [data-theme = '#{$theme-name}'] & {
      background: map-get($map: $theme, $key: background-color);
    }
  }
}

$font-size: 14px;

2.在 App.vue 中定义名为 “data-theme” 的变量,可设置此变量来配置主题颜色

<template>
    <!-
  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值