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


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 相关文章推荐
javascript innerHTML使用分析
Dec 03 Javascript
js 判断脚本加载完毕的代码
Jul 13 Javascript
缓动函数requestAnimationFrame 更好的实现浏览器经动画
Dec 07 Javascript
JS简单的轮播的图片滚动实例
Jun 17 Javascript
js控制页面控件隐藏显示的两种方法介绍
Oct 09 Javascript
JS获取各种浏览器窗口大小的方法
Jan 14 Javascript
javascript实现base64 md5 sha1 密码加密
Sep 09 Javascript
javascript中的 object 和 function小结
Aug 14 Javascript
jQuery实现上传图片前预览效果功能
Aug 03 jQuery
SVG动画vivus.js库使用小结(实例代码)
Sep 14 Javascript
vue中Element-ui 输入银行账号每四位加一个空格的实现代码
Sep 14 Javascript
在Uni中使用Vue的EventBus总线机制操作
Jul 31 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
discuz7 phpMysql操作类
2009/06/21 PHP
PHP编程函数安全篇
2013/01/08 PHP
关于Curl在Swoole协程中的解决方案详析
2019/09/12 PHP
Gird组件 Part-3:范例RSSFeed Viewer
2007/03/10 Javascript
仅img元素创建后不添加到文档中会执行onload事件的解决方法
2011/07/31 Javascript
详谈 Jquery Ajax异步处理Json数据.
2011/09/09 Javascript
JS中令人发指的valueOf方法介绍
2013/02/22 Javascript
jquery form表单序列化为对象的示例代码
2014/03/05 Javascript
js+csss实现的一个带复选框的下拉框
2014/09/29 Javascript
jQuery判断对象是否存在的方法
2015/02/05 Javascript
JavaScript中计算网页中某个元素的位置
2015/06/10 Javascript
JavaScript入门系列之知识点总结
2016/03/24 Javascript
Javascript中构造函数要注意的一些坑
2017/01/23 Javascript
Angular在一个页面中使用两个ng-app的方法(二)
2017/02/20 Javascript
JavaScript实现的数字与字符串转换功能示例
2017/08/23 Javascript
使用vuex的state状态对象的5种方式
2018/04/19 Javascript
Jquery的Ajax技术使用方法
2019/01/21 jQuery
[01:32:10]NAVI vs VG Supermajor 败者组 BO3 第一场 6.5
2018/06/06 DOTA
[32:17]完美世界DOTA2联赛循环赛LBZS vs Forest第二场 10月30日
2020/10/31 DOTA
[01:01]2020完美高校联赛(秋)西安落幕
2021/03/11 DOTA
Python numpy 常用函数总结
2017/12/07 Python
python清除字符串前后空格函数的方法
2018/10/21 Python
Pycharm远程调试原理及具体配置详解
2019/08/08 Python
python实现将range()函数生成的数字存储在一个列表中
2020/04/02 Python
python将unicode和str互相转化的实现
2020/05/11 Python
Python实现电视里的5毛特效实例代码详解
2020/05/15 Python
python 通过文件夹导入包的操作
2020/06/01 Python
python自动从arxiv下载paper的示例代码
2020/12/05 Python
C#如何调用Windows程序打开一个文档
2014/12/26 面试题
日期和时间问题
2015/01/04 面试题
最新的咖啡店创业计划书
2013/12/30 职场文书
领导视察欢迎词
2014/01/15 职场文书
什么是就业协议书
2014/04/17 职场文书
运动会表扬稿
2015/01/16 职场文书
售后前台接待岗位职责
2015/04/03 职场文书
解决mysql:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO/YES)
2021/06/26 MySQL