找回密码
 立即注册
搜索
查看: 5|回复: 0

微信小程序动态设置背景颜色方法:全局变量与函数实现详解

[复制链接]

2万

主题

0

回帖

6万

积分

管理员

积分
60630
发表于 2025-4-22 04:22:40 | 显示全部楼层 |阅读模式
动态设置背景颜色

静态设置背影颜色的方式较为简单,只需在 app.wxss 里对 page 样式进行统一设置。

<p><pre>    <code class="prism language-javascript">page <span class="token punctuation">{</span>
[id_225023315]<span class="token operator">-</span>color<span class="token punctuation">:</span> <span class="token function">rgba</span><span class="token punctuation">(</span><span class="token number">250</span><span class="token punctuation">,</span><span class="token number">250</span><span class="token punctuation">,</span><span class="token number">250</span><span class="token punctuation">,</span><span class="token number">0.90</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
</code></pre></p>
全局变量的使用

然而我们期望能够动态地设置背景颜色,也就是让用户能够在给定的背景颜色当中进行选择。首先,我们通过对相关资料的查阅,得知微信小程序是可以设置全局变量的,并且需要在 app.js 中进行添加才能够实现,具体的实现方式如下:

<p><pre>    <code class="prism language-javascript"><span class="token keyword">var</span> backcolor <span class="token operator">=</span> <span class="token string">"#3197ed"</span><span class="token comment">//设置初始值</span>
<span class="token keyword">var</span> background
globalData<span class="token punctuation">:</span> <span class="token punctuation">{</span>
    background <span class="token punctuation">:</span> backcolor
  <span class="token punctuation">}</span>
</code></pre></p>
全局变量能够在其他地方进行动态修改,这与我们所期望的效果极为契合。修改动态变量的方式如下:

<p><pre>    <code class="prism language-javascript">        <span class="token keyword">var</span> app <span class="token operator">=</span> <span class="token function">getApp</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token comment">//在开头这样写</span>
        ……
        red<span class="token punctuation">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
    background <span class="token operator">=</span> <span class="token string">"#F4A7B9"</span>


    <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">setData</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
      background<span class="token punctuation">:</span> background
    <span class="token punctuation">}</span><span class="token punctuation">)</span>
    app<span class="token punctuation">.</span>globalData<span class="token punctuation">.</span>background <span class="token operator">=</span> background<span class="token comment">修改全局变量,此时 app.globalData.background 的值是"#F4A7B9"</span>
  <span class="token punctuation">}</span><span class="token punctuation">,</span>
</code></pre></p>
修改背景颜色函数的编写

介绍完全局变量之后,就开始进行具体的函数实现了。例如在 js 中,有两个具体的函数:

<p><pre>    <code class="prism language-javascript">red<span class="token punctuation">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
    background <span class="token operator">=</span> <span class="token string">"#F4A7B9"</span>
    <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">setData</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
      background<span class="token punctuation">:</span> background
    <span class="token punctuation">}</span><span class="token punctuation">)</span>
    app<span class="token punctuation">.</span>globalData<span class="token punctuation">.</span>background <span class="token operator">=</span> background
    wx<span class="token punctuation">.</span><span class="token function">setNavigationBarColor</span><span class="token punctuation">(</span><span class="token punctuation">{</span><span class="token comment">//设置导航栏颜色</span>
      frontColor<span class="token punctuation">:</span> <span class="token string">&#39;#000000&#39;</span><span class="token punctuation">,</span><span class="token comment">注意,frontColor 的值有两种情况,一种是 000000,另一种是 111111。</span>
      backgroundColor<span class="token punctuation">:</span> app<span class="token punctuation">.</span>globalData<span class="token punctuation">.</span>background
    <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  <span class="token punctuation">}</span><span class="token punctuation">,</span>
  moren<span class="token punctuation">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token comment">//还原默认的函数</span>
    background <span class="token operator">=</span> <span class="token string">"#3197ed"</span>
    <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">setData</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
      background<span class="token punctuation">:</span> background
    <span class="token punctuation">}</span><span class="token punctuation">)</span>
    app<span class="token punctuation">.</span>globalData<span class="token punctuation">.</span>background <span class="token operator">=</span> background
    wx<span class="token punctuation">.</span><span class="token function">setNavigationBarColor</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
      frontColor<span class="token punctuation">:</span> <span class="token string">&#39;#000000&#39;</span><span class="token punctuation">,</span>
      backgroundColor<span class="token punctuation">:</span> app<span class="token punctuation">.</span>globalData<span class="token punctuation">.</span>background
    <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  <span class="token punctuation">}</span>
</code></pre></p>
设置完全局变量之后,我们能够在.wxml 中进行调用,通过使用公共属性 style 来实现这一点。

在需要显示背景颜色的页面加入style来动态显示背景颜色

<p><pre>    <code class="prism language-javascript"><span class="token operator"><</span>view<span class="token operator">></span>
<span class="token operator"><</span>button <span class="token keyword">class</span><span class="token operator">=</span><span class="token string">&#39;btn1&#39;</span> style<span class="token operator">=</span><span class="token string">"background:#F4A7B9"</span> bindtap<span class="token operator">=</span><span class="token string">"red"</span><span class="token operator">></span>变红<span class="token operator"><</span><span class="token operator">/</span>button<span class="token operator">></span>
<span class="token operator"><</span><span class="token operator">/</span>view<span class="token operator">></span>
</code></pre></p>
这样就可以动态的修改背景颜色了!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|【宏智网络】 ( 京ICP备20013102号 )

GMT+8, 2025-5-8 08:15 , Processed in 0.120678 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表