微信小程序 遮罩功能实现

所有的用法是控制显示隐藏的flag的起名的时候都加一个flag.驼峰命名法。

step 1 放一个空块

 
    
  1. <view class='mask'></view>

step2 写空块的样式

 
    
  1. .mask{
  2. width:100%;
  3. height:100%;
  4. position:absolute;
  5. background-color:#999;
  6. z-index:9999;
  7. top:0;
  8. left:0;
  9. opacity:0.5;
  10. }

其中颜色可以任选,透明度也可以任选。

有的人做了这样的兼容处理:

 
    
  1. -moz-opacity: 0.7;
  2. opacity: 0.70;
  3. filter: alpha(opacity=70);

目前不太明白,没有看到需要的地方,以后可以再添加这个,若是需要。

或者使用rgba的颜色也可以解决。

step 3 控制显示还是隐藏

 
    
  1. wx:ifhidden的选择
  2. wx:if是...
  3. hidden是...

因为 wx:if 之中的模板也可能包含数据绑定,所有当 wx:if 的条件值切换时,框架有一个局部渲染的过程,因为它会确保条件块在切换时销毁或重新渲染。 
同时 wx:if 也是惰性的,如果在初始渲染条件为 false,框架什么也不做,在条件第一次变成真的时候才开始局部渲染。 
相比之下,hidden 就简单的多,组件始终会被渲染,只是简单的控制显示与隐藏。 
一般来说,wx:if 有更高的切换消耗而 hidden 有更高的初始渲染消耗。因此,如果需要频繁切换的情景下,用 hidden 更好,如果在运行时条件不大可能改变则 wx:if 较好。

所以

 
    
  1. <view class='mask' hidden='{{maskFlag}}'></view>

step 4 绑定方法控制 flag 的 true or false

bindtap='showFlag' 
然后再写一下事件处理函数

 
    
  1. showFlag:function(){
  2. this.setData({
  3. maskFlag:false,
  4. oilchooseFlag:true
  5. })
  6. }

事件处理函数控制显隐,可以控制N个变量 
还需要点确定的时候隐藏起来,如下图

点确定的时候隐藏

 
    
  1. <view class='oil_confirm' catchtap='oilConfirm'>确定</view>
  2. oilConfirm:function(){
  3. this.setData({
  4. maskFlag: true,
  5. oilchooseFlag: false
  6. })
  7. }

他人做法:

通过控制style的display来控制显示和隐藏:

 
    
  1. <view class="show" bindtap='hideview' style='display:{{display}}'>

点评:官方说明style 接收动态的样式,在运行时会进行解析,请尽量避免将静态的样式写进 style 中,以免影响渲染速度。所以最好不要使用这种方式。

至此,完成。


  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值