微信小程序实现点击空白隐藏的方法示例


Posted in Javascript onAugust 13, 2019

怎样实现jq中的slideUp或者slideDown这种动画效果呢,我的思路是用css3的transform: translateY()属性,给需要动画的元素添加上一个动画class。

先上效果图:

微信小程序实现点击空白隐藏的方法示例
1.蒙层的结构:

<!-- 购物车蒙层 -->
<view class='list-fix' wx:if="{{mengShow}}" bindtap='outbtn'>     //mengShow是蒙层是否显示的标志,然后蒙层绑定outbtn的点击事件
  <view class='in-list {{aniStyle?"slideup":"slidedown"}}' catchtap='inbtn'>
//这里的三元运算符是判断动画该执行哪一种,catchtap这个是阻止冒泡的点击事件,这个事件必须有,才能阻止冒泡
    <view class='in-content'>
      <text>已选商品(1)</text>
      <text class='iconfont icon-6'>清空购物车</text>
    </view>
    <view class='cho-list' wx:for="{{chooseList}}" wx:key="">
      <view class='listName'>{{item.Cname}}</view>
      <view class='listPrice'>¥{{item.Cprice}}</view>
      <view class='opBtn'>
        <view class='com-btn cuts' >-</view>   
        <view class='com-num'>{{item.Cnum}}</view>
        <view class='com-btn add' >+</view>   
      </view>
    </view>
  </view>
</view>

注意:三元运算符里的slideup和slidedown一定要加上引号

2.蒙层的其它样式自己写。最主要的是slideup和slidedown的动画效果的样式:

@keyframes slidedown {
  from {
    transform: translateY(0);
  }
  to {
    transform: translateY(100%);
  }
}
.slidedown {
  animation: slidedown 0.5s linear ;
}
.slideup {
  animation: slideup 0.5s linear ;
}
@keyframes slideup {
  from {
    transform: translateY(100%);
  }
  to {
    transform: translateY(0);
  }
}

其它的样式:list-fix是fixed定位,而in-list是absolute定位。

需要注意的一点是:做的时候,是从Y轴100%的位置处即最底部开始运动或是从0到100%,所以要设置z-index,才能实现在底部运动起来的时候或者回到100%即底部的时候,蒙层浮在“确认下单”这整个结构的下面。即“确认下单”这整个结构的z-index要大于蒙层的z-index。

3.js

page({
  data: {
    mengShow:false,//蒙层的显示与否
   aniStyle:true,  //动画效果,默认slideup     
  },
  //蒙层的显示
  showMeng:function(e){     //这是“确认下单”这整个购物车导航栏的点击事件
    this.setData({
      mengShow:true,      //蒙层显示
      aniStyle:true



//设置动画效果为slideup
    })
  },
  outbtn:function(e){      //这是list-fix的点击事件,给它绑定事件,是为了实现点击其它地方隐藏蒙层的效果
    var that=this;
    this.setData({




      aniStyle:false


//设置动画效果为slidedown
    })
    setTimeout(function(){    //延时设置蒙层的隐藏,这个定时器的时间,就是slidedown在css动画里设置的时间,这样就能实现slidedown动画完成后,蒙层才消失的效果。不设置定时器会导致动画效果看不见
      that.setData({
        mengShow: false
      })
    },500)
  },
  inbtn:function(e){     //这个事件必须有,就算不做什么事情也要写上去,因为这个事件是为了防止事件冒泡,导致点击in-list这里面的元素时,点击事件冒泡到list-fix触发它的slidedown事件。
    console.log("in")
  }, 
})

这样就能实现slidedown和slideup,点击其它地方隐藏某元素的功能了。

总结:

1.防止冒泡的点击事件:catchtap=“”

2.点击父元素除子元素以外的其它地方隐藏父元素的方法:父元素绑定一个点击隐藏事件,然后子元素绑定catchtap这种能阻止冒泡的事件

3.巧用定时器设置属性值,可达到类似上面执行一个动画之后再执行另外一个动画的方法。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
基于jquery的让页面控件不可用的实现代码
Apr 27 Javascript
WEB前端开发框架Bootstrap3 VS Foundation5
May 16 Javascript
JS 面向对象之继承---多种组合继承详解
Jul 10 Javascript
jquery过滤特殊字符',防sql注入的实现方法
Aug 17 Javascript
使用jQuery.Qrcode插件在客户端动态生成二维码并添加自定义Logo
Sep 01 Javascript
ionic在开发ios系统微信时键盘挡住输入框的解决方法(键盘弹出问题)
Sep 06 Javascript
AngularJS中的JSONP实例解析
Dec 01 Javascript
学习LayUI时自研的表单参数校验框架案例分析
Jul 29 Javascript
Vue中Table组件行内右键菜单实现方法(基于 vue + AntDesign)
Nov 21 Javascript
js实现提交前对列表数据的增删改查
Jan 16 Javascript
js实现点击上传图片并设为模糊背景
Aug 02 Javascript
JavaScript中遍历的十种方法总结
Dec 15 Javascript
微信小程序使用npm包的方法步骤
Aug 13 #Javascript
Vue中的transition封装组件的实现方法
Aug 13 #Javascript
vue项目中使用AES实现密码加密解密(ECB和CBC两种模式)
Aug 12 #Javascript
详解json串反转义(消除反斜杠)
Aug 12 #Javascript
json 带斜杠时如何解析的实现
Aug 12 #Javascript
electron实现静默打印的示例代码
Aug 12 #Javascript
微信小程序 弹窗输入组件的实现解析
Aug 12 #Javascript
You might like
Blitz templates 最快的PHP模板引擎
2010/04/06 PHP
兼容性最强的PHP生成缩略图的函数代码(修改版)
2011/01/18 PHP
php二维数组排序详解
2013/11/06 PHP
thinkphp3.2.2前后台公用类架构问题分析
2014/11/25 PHP
PHP简单实现合并2个数字键数组值的方法
2017/05/30 PHP
IE8 chrome中table隔行换色解决办法
2010/07/09 Javascript
Jquery读取URL参数小例子
2013/08/30 Javascript
JavaScript cookie的设置获取删除详解
2014/02/11 Javascript
js获取客户端网卡的IP地址、MAC地址
2014/03/26 Javascript
jquery实现相册一下滑动两次的方法
2015/02/09 Javascript
JavaScript中setFullYear()方法的使用详解
2015/06/11 Javascript
bootstrapValidator 重新启用提交按钮的方法
2017/02/20 Javascript
JavaScript 有用的代码片段和 trick
2018/02/22 Javascript
vue计算属性computed的使用方法示例
2019/03/13 Javascript
js实现消灭星星(web简易版)
2020/03/24 Javascript
JS字符串补全方法padStart()和padEnd()
2020/05/27 Javascript
[01:17:55]VGJ.T vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/20 DOTA
pymongo实现多结果进行多列排序的方法
2015/05/16 Python
Python脚本获取操作系统版本信息
2016/12/17 Python
python实现杨辉三角思路
2017/07/14 Python
详解Python并发编程之从性能角度来初探并发编程
2019/08/23 Python
Python双链表原理与实现方法详解
2020/02/22 Python
新手学python应该下哪个版本
2020/06/11 Python
html5 横向滑动导航栏的方法示例
2020/05/08 HTML / CSS
英国买鞋网站:Charles Clinkard
2019/11/14 全球购物
酒店个人培训自我鉴定
2013/12/11 职场文书
运动会100米解说词
2014/01/23 职场文书
运动会解说词200字
2014/02/06 职场文书
实习评语大全
2014/04/26 职场文书
喝酒驾驶检讨书
2014/10/01 职场文书
2016年寒假政治学习心得体会
2015/10/09 职场文书
再见,2019我们不负使命;你好,2020我们砥砺前行
2020/01/03 职场文书
详解JVM系列之内存模型
2021/06/10 Javascript
Redis源码阅读:Redis字符串SDS详解
2021/07/15 Redis
Mysql中有关Datetime和Timestamp的使用总结
2021/12/06 MySQL
Java 超详细讲解IO操作字节流与字符流
2022/03/25 Java/Android