uniapp 微信小程序配置全局主题色、实现动态修改主题色

文章介绍了如何在uniapp中通过uni.scss统一配置小程序的主题色,包括本地SVG图标的色调。首先在uni.scss中定义颜色变量,然后在样式和JavaScript中引用这些变量。此外,还讨论了如何通过后台接口动态调整前端主题色,并利用颜色变量来改变SVG图标的颜色,实现了全局颜色修改的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:

        本文的实现目标是全局配置小程序的整体主题色,包括本地图标的色调。第一步实现在本地可以统一修改整体的主题色以及本地图标的颜色;第二步实现通过后台接口动态调整小程序前端的整体主题色以及本地图标颜色。本地图标的主题色调整需要使用svg格式的图片,关于svg图片颜色修改可以参考文章uniapp开发微信小程序——实现动态修改svg图标颜色

一、统一配置

        1、uni.scss

        这里使用uni.scss文件来做全局的颜色配置。uniapp的编译器在webpack配置中对uni.scss做了特殊处理,使每个scss文件都被注入了uni.scss,达到配置全局可用的效果。

        style节点只需要加上lang="scss",就可以直接引用uni.scss中配置好的变量,无需import导入。

<style lang="scss">
</style>

        这里直接用默认的uni.scss文件内容:

/* 颜色变量 */

/* 行为相关颜色 */
$uni-color-primary: #007aff;
$uni-color-success: #4cd964;
$uni-color-warning: #f0ad4e;
$uni-color-error: #dd524d;

/* 文字基本颜色 */
$uni-text-color:#333;//基本色
$uni-text-color-inverse:#fff;//反色
$uni-text-color-grey:#999;//辅助灰色,如加载更多的提示信息
$uni-text-color-placeholder: #808080;
$uni-text-color-disable:#c0c0c0;

/* 背景颜色 */
$uni-bg-color:#ffffff;
$uni-bg-color-grey:#f8f8f8;
$uni-bg-color-hover:#f1f1f1;//点击状态颜色
$uni-bg-color-mask:rgba(0, 0, 0, 0.4);//遮罩颜色

/* 边框颜色 */
$uni-border-color:#c8c7cc;

/* 尺寸变量 */

/* 文字尺寸 */
$uni-font-size-sm:12px;
$uni-font-size-base:14px;
$uni-font-size-lg:16;

/* 图片尺寸 */
$uni-img-size-sm:20px;
$uni-img-size-base:26px;
$uni-img-size-lg:40px;

/* Border Radius */
$uni-border-radius-sm: 2px;
$uni-border-radius-base: 3px;
$uni-border-radius-lg: 6px;
$uni-border-radius-circle: 50%;

/* 水平间距 */
$uni-spacing-row-sm: 5px;
$uni-spacing-row-base: 10px;
$uni-spacing-row-lg: 15px;

/* 垂直间距 */
$uni-spacing-col-sm: 4px;
$uni-spacing-col-base: 8px;
$uni-spacing-col-lg: 12px;

/* 透明度 */
$uni-opacity-disabled: 0.3; // 组件禁用态的透明度

/* 文章场景相关 */
$uni-color-title: #2C405A; // 文章标题颜色
$uni-font-size-title:20px;
$uni-color-subtitle: #555555; // 二级标题颜色
$uni-font-size-subtitle:26px;
$uni-color-paragraph: #3F536E; // 文章段落颜色
$uni-font-size-paragraph:15px;

         我们在需要引用的页面的style节点加上lang="scss"之后,就可以在样式中直接使用uni.scss中配置好的颜色变量,这里以 $uni-color-primary 为例:

<style lang="scss">
	.quare-v{
		width: 200rpx;
		height: 200rpx;
		background-color: $uni-color-primary;
	}
</style>
<view class="content">
	<view class="quare-v"></view>
</view>

可以看到展现出来的效果,背景颜色为uni.scss中设置好的颜色:

        2、js引用uni.scss中变量

        以上展示了在style中直接引用uni.scss中配置好的颜色变量。下面来看一下在js中可不可以去引用uni.scss中的颜色变量呢。

        js中是不可以直接引用uni.scss中的变量的,首先需要在uni.scss中通过export导出颜色变量,然后在js中import引入uni.scss就可以调用其中配置好的颜色变量了。

        uni.scss文件中导出变量示例如下,加上如下代码就可以了:

:export {
	uni_color_success: $uni-color-success
}

      在js中引入uni.scss文件:

import styles from '../../uni.scss'

        在需要使用到配置好的颜色的地方,使用如下代码,就可以调用到:

styles.uni_color_success

        效果如下:

this.bagColor = styles.uni_color_success;
<view class="content">
	<view class="square-v" :style="{'background-color': bagColor}"></view>
	<view class="square-v"></view>
</view>

 结合文章uniapp开发微信小程序——实现动态修改svg图标颜色。我们可以使用引用的颜色变量的值,修改svg图片的颜色:

        在整个工程中,需要用到颜色的样式和js中我们都引入uni.scss,在uni.scss中配置统一的颜色变量。就可以实现修改一处颜色值,全局的颜色都被修改的功能,达到本地统一配置修改全局主题色的目的。 

好的,我可以回答你关于 uniapp 微信小程序多环境配置及使用的问题。 首先,多环境配置可以让你在开发过程中轻松地切换不同的环境,比如开发环境、测试环境和生产环境。在 uniapp 中,我们可以通过配置不同的变量来实现多环境的配置,下面是具体的步骤: 1. 在项目根目录下创建不同环境的配置文件,比如 dev.env.js、test.env.js 和 prod.env.js。 2. 在配置文件中定义不同环境下的变量,比如接口地址、图片地址等。 3. 在项目中引入对应的配置文件,并将变量挂载到全局的 Vue 实例上。 4. 在代码中使用挂载的变量。 下面是一个示例代码: // dev.env.js module.exports = { API_BASE_URL: 'https://dev-api.example.com', IMG_BASE_URL: 'https://dev-img.example.com' } // test.env.js module.exports = { API_BASE_URL: 'https://test-api.example.com', IMG_BASE_URL: 'https://test-img.example.com' } // prod.env.js module.exports = { API_BASE_URL: 'https://api.example.com', IMG_BASE_URL: 'https://img.example.com' } // main.js import Vue from 'vue' import App from './App' import envConfig from './config/' + process.env.NODE_ENV + '.env.js' Vue.prototype.$envConfig = envConfig new Vue({ el: '#app', render: h => h(App) }) // api.js import axios from 'axios' export function getList() { return axios.get(`${this.$envConfig.API_BASE_URL}/list`) } // 在组件中使用 methods: { async getList() { try { const res = await this.$http.getList() // do something with res } catch (err) { console.error(err) } } } 以上就是 uniapp 微信小程序多环境配置及使用的基本步骤,希望能对你有所帮助!
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值