微信小程序动态设置背景颜色方法:全局变量与函数实现详解
动态设置背景颜色静态设置背影颜色的方式较为简单,只需在 app.wxss 里对 page 样式进行统一设置。
<p><pre> <code class="prism language-javascript">page <span class="token punctuation">{</span>
<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>
https://img1.baidu.com/it/u=1983284678,1528185745&fm=253&fmt=JPEG&app=138&f=GIF?w=1003&h=500
<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">'#000000'</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">'#000000'</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">'btn1'</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>
这样就可以动态的修改背景颜色了!
页:
[1]