跳到主要内容
技术分享

基于vue和scss采用uniapp开发主题皮肤更换的实现

Vue中如何使用scss实现换肤(更换主题)功能?创软小程序开发团队在使用uni-app开发小程序时,使用了scss换肤功能的开发,整理如下。

本文发布于上述日期,内容与截图以当时版本为准;当前服务范围和联系方式请以本站最新页面为准。

基于vue和scss采用uniapp开发主题皮肤更换的实现

小程序开发过程中,基于Vue如何使用scss实现换肤(更换主题)功能的开发?

创软小程序开发团队经过梳理后简单整理如下。

首先,.scss 文件申明如下

$color-primary:#fa436a; /* 主题颜色 */
$color-primary-green:green; /* 更换的颜色 */
$color-primary-blue:blue; /* 更换的颜色 */


@mixin color_primary($color){/*通过该函数设置字体颜色,后期方便统一管理;*/
  color:$color;
  
  [data-theme="green"] & {
    color:$color-primary-green;
  }
  [data-theme="blue"] & {
    color:$color-primary-blue;
  }
  
}


/* 更换背景颜色采用上面一样的逻辑 */

其次,在页面引用中的代码

.price{
    /*color: $color-primary;*/  /* 原始引用方式,错误 */
    @include color_primary($color-primary); /* 采用函数调用 */
}

最后,在js中设置更换皮肤

window.document.documentElement.setAttribute('data-theme', 'green'); /* */

Vue中如何使用scss实现换肤功能的主要原理

通过设置html的attribute属性在封装的函数中进行判断,进行相应的设置不同的颜色

css中 [ ] 可以识别到在html标签上设置的属性,所以在html上对应属性发生变化时,就会执行相应的样式,

这一步有点类似于平时给div添加一个.active属性,css自动执行相应样式。

项目沟通

需要把内容里的想法落到企业系统中?

我们可以从业务流程、现有系统和数据条件开始讨论,判断适合定制开发、系统集成还是AI能力接入。

18981997898

项目咨询

获取 AI 或软件定制建议

留下基本信息,我们先按业务场景判断适合的技术路线。

欢迎直接电话或微信沟通,也可以先到联系页查看办公地址和项目准备清单。

成都创软科技微信客服二维码 微信扫码联系