微信小程序开发——动态修改背景颜色

本文介绍了微信小程序中如何利用全局变量实现动态修改背景颜色。通过在app.js设置globalData,然后编写修改背景颜色的函数,以及在.wxml中调用,可以实现页面背景颜色的动态显示。

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


静态设置背影颜色的方式比较简单,只需要在app.wxss中统一设置page样式。

page {
  background-color: rgba(250,250,250,0.90);
}

全局变量的使用

然而我们想动态设置背景颜色,即让用户在给定的背景颜色中做出选择。首先通过查阅资料了解到微信小程序是可以设置全局变量的,要在app.js中添加globalData来实现,具体如下:

var backcolor = "#3197ed"//设置初始值
var background
globalData: {
    background : backcolor
  }

而全局变量是可以在别的地方动态修改的,这就与我们想要的效果非常贴切了。修改动态变量的方法如下:

	var app = getApp();//在开头这样写
	……
	red: function () {
    background = "#F4A7B9"
    this.setData({
      background: background
    })
    app.globalData.background = background//实现全局变量的修改,此时app.globalData.background的值为"#F4A7B9"
  },

修改背景颜色函数的编写

在介绍完全局变量后接下来就是具体的函数实现了,以js中两个具体函数为例:

red: function () {
    background = "#F4A7B9"
    this.setData({
      background: background
    })
    app.globalData.background = background
    wx.setNavigationBarColor({//设置导航栏颜色
      frontColor: '#000000',//注意frontColor的值只能为000000或者111111
      backgroundColor: app.globalData.background
    });
  },
  moren: function () {//还原默认的函数
    background = "#3197ed"
    this.setData({
      background: background
    })
    app.globalData.background = background
    wx.setNavigationBarColor({
      frontColor: '#000000',
      backgroundColor: app.globalData.background
    });
  }

在设置完全局变量background之后,我们是可以在.wxml中调用的,这样通过使用公共属性style微信官方文档
在需要显示背景颜色的页面加入style来动态显示背景颜色

<view>
 <button class='btn1' style="background:#F4A7B9" bindtap="red">变红</button>
</view>

这样就可以动态的修改背景颜色了!

### 修改微信小程序页面顶部区域背景颜色 为了修改微信小程序页面顶部区域(包括状态栏和导航栏)的背景颜色,可以采取两种主要方法:使用内置API配置以及通过自定义组件实现更复杂的样式。 #### 使用内置 API 配置 对于简单的背景色更改需求,可以直接利用 `page.json` 或者单个页面对应的 `.json` 文件中的属性来调整。具体来说: - 设置 `navigationStyle` 属性为 `"custom"` 可以开启自定义导航条模式[^2]。 如果仅需改变默认导航栏的颜色而不涉及其他复杂定制,则无需启用此选项,而是直接设置如下两个参数即可满足基本需求: - 利用 `backgroundColor` 来指定整个导航栏(含底部线条)的底色; - 应用 `navigationBarBackgroundColor` 改变纯导航栏部分(不含状态栏)的色彩; - 调整 `navigationBarTextStyle` 控制标题文字颜色,该值接受 `'black'` 和 `'white'` 作为合法输入。 这些配置项允许开发者快速便捷地设定全局或局部页面的主题色调而不需要额外编写大量代码逻辑。 ```json { "usingComponents": {}, "window": { "backgroundTextStyle": "dark", "navigationBarBackgroundColor": "#F0AD4E", // 导航栏背景颜色 "navigationBarTitleText": "WeChat", "navigationBarTextStyle": "white" } } ``` #### 自定义组件方式 当项目中有更多个性化设计要求时,比如想要完全掌控布局细节或是加入动画效果等高级特性,就需要采用更加灵活的方式——创建一个自定义导航栏组件。这通常涉及到以下几个方面的工作: 1. **获取设备信息** 在页面加载完成后调用 `uni.getSystemInfo()` 获取当前运行环境的相关数据,特别是用于计算实际可用空间尺寸的关键数值如 `statusBarHeight` (即系统状态栏高度),从而确保界面元素能够适配各种屏幕分辨率下的显示情况[^1]。 2. **构建 HTML 结构并应用 CSS 样式** 基于上述获得的信息,在 WXML 中搭建合适的 DOM 结构,并配合 WXSS 定义视觉表现形式。例如下面这段代码展示了如何建立一个带有固定定位且覆盖全屏宽度的基础框架,其中包含了模拟原生返回按钮样式的胶囊图标以及其他可能存在的交互控件[^3]。 ```html <view class="containerBox"> <view class="fieldBox"></view> </view> <!-- 对应的WXSS --> .containerBox .fieldBox { background-color: rgb(173, 80, 80); width: 100%; } .fieldBox { position: fixed; top: var(--status-bar-height); /* 动态适应不同机型 */ z-index: 999; height: 44px; /* 微信规定标准高度 */ line-height: 44px; text-align: center; color: white; } ``` 请注意这里采用了 CSS 变量 `--status-bar-height` 来动态反映不同的状态栏高度变化,虽然文中提到不应依赖此类预设值,但在某些情况下合理运用仍可简化开发流程,只要保证其取值来自真实的系统反馈而非硬编码常数即可。 综上所述,无论是简单还是复杂的场景下,都有相应的解决方案可供选择,帮助开发者轻松达成预期的设计目标。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值