微信小程序实现slideUp、slideDown滑动效果及点击空白隐藏功能示例


Posted in Javascript onDecember 11, 2018

本文实例讲述了微信小程序实现slideUp、slideDown滑动效果及点击空白隐藏功能。分享给大家供大家参考,具体如下:

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

先上效果图:

微信小程序实现slideUp、slideDown滑动效果及点击空白隐藏功能示例

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 相关文章推荐
js中几种去掉字串左右空格的方法
Dec 25 Javascript
jQuery获取样式中的背景颜色属性值/颜色值
Dec 17 Javascript
再谈Jquery Ajax方法传递到action(补充)
May 12 Javascript
基于JQuery制作可编辑的表格特效
Dec 23 Javascript
在Javascript中处理数组之toSource()方法的使用
Jun 09 Javascript
jquery Deferred 快速解决异步回调的问题
Apr 05 Javascript
javascript浏览器用户代理检测脚本实现方法
Oct 27 Javascript
vue.js element-ui tree树形控件改iview的方法
Mar 29 Javascript
浅谈Webpack多页应用HMR卡住问题
Apr 24 Javascript
js简单的分页器插件代码实例
Sep 11 Javascript
angular中的post请求处理示例详解
Jun 30 Javascript
Vue3 响应式侦听与计算的实现
Nov 11 Javascript
微信小程序实现两个页面传值的方法分析
Dec 11 #Javascript
jQuery使用bind动态绑定事件无效的处理方法
Dec 11 #jQuery
微信小程序实现的3d轮播图效果示例【基于swiper组件】
Dec 11 #Javascript
vue-cli 3.0 版本与3.0以下版本在搭建项目时的区别详解
Dec 11 #Javascript
微信小程序非swiper组件实现的自定义伪3D轮播图效果示例
Dec 11 #Javascript
vue-cli2.0转3.0之项目搭建的详细步骤
Dec 11 #Javascript
jQuery实现点击旋转,再点击恢复初始状态动画效果示例
Dec 11 #jQuery
You might like
一个域名查询的程序
2006/10/09 PHP
我的论坛源代码(二)
2006/10/09 PHP
Windows下XDebug 手工配置与使用说明
2010/07/11 PHP
微信公众号判断用户是否已关注php代码解析
2016/06/24 PHP
php+redis实现商城秒杀功能
2020/11/19 PHP
Laravel框架实现修改登录和注册接口数据返回格式的方法
2018/08/17 PHP
用javascript获取地址栏参数
2006/12/22 Javascript
JavaScript 内置对象属性及方法集合
2010/07/04 Javascript
使用JQuery库提供的扩展功能实现自定义方法
2014/09/09 Javascript
JS烟花背景效果实现方法
2015/03/03 Javascript
JS弹出窗口的运用与技巧大全
2016/11/01 Javascript
微信小程序 ecshop地址三级联动实现实例代码
2017/02/28 Javascript
JS回调函数基本定义与用法实例分析
2017/05/24 Javascript
node.js使用redis储存session的方法
2018/09/26 Javascript
一步步教你利用Docker设置Node.js
2018/11/20 Javascript
JavaScript实现PC端四格密码输入框功能
2020/02/19 Javascript
Vue实现简易计算器
2020/02/25 Javascript
Vue+Java 通过websocket实现服务器与客户端双向通信操作
2020/09/22 Javascript
使用Typescript开发微信小程序的步骤详解
2021/01/12 Javascript
[55:44]OG vs NAVI 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
python 中random模块的常用方法总结
2017/07/08 Python
Python多线程扫描端口代码示例
2018/02/09 Python
django2.0扩展用户字段示例
2019/02/13 Python
Python如何调用外部系统命令
2019/08/07 Python
利用keras加载训练好的.H5文件,并实现预测图片
2020/01/24 Python
python输出pdf文档的实例
2020/02/13 Python
详解解决jupyter不能使用pytorch的问题
2021/02/18 Python
统计每一学生的平均成绩
2014/06/06 面试题
餐饮管理自我介绍信
2014/01/15 职场文书
决心书标准格式
2014/03/11 职场文书
大学生标准自荐书
2014/06/15 职场文书
研究生求职自荐书
2014/06/23 职场文书
检讨书范文大全
2015/05/07 职场文书
2015年车间主任工作总结
2015/05/21 职场文书
优秀党员先进事迹材料2016
2016/02/29 职场文书
解析redis hash应用场景和常用命令
2021/08/04 Redis