微信小程序实现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 相关文章推荐
juqery 学习之三 选择器 简单 内容
Nov 25 Javascript
js 窗口抖动示例
Sep 04 Javascript
原生JS操作网页给p元素添加onclick事件及表格隔行变色
Dec 01 Javascript
js处理php输出时间戳对不上号的解决方法
Jun 20 Javascript
innerHTML动态添加html代码和脚本兼容多个浏览器
Oct 11 Javascript
js中confirm实现执行操作前弹出确认框的方法
Nov 01 Javascript
jQuery子属性过滤选择器用法分析
Feb 10 Javascript
JavaScript入门教程之引用类型
May 04 Javascript
一步步教你利用webpack如何搭一个vue脚手架(超详细讲解和注释)
Jan 08 Javascript
js 索引下标之li集合绑定点击事件
Jan 12 Javascript
基于canvasJS在PHP中制作动态图表
May 30 Javascript
JS中的继承操作实例总结
Jun 06 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
php 表单数据的获取代码
2009/03/10 PHP
基于PHP array数组的教程详解
2013/06/05 PHP
destoon公司主页模板风格的添加方法
2014/06/20 PHP
CI框架中通过hook的方式实现简单的权限控制
2015/01/07 PHP
php入门教程之Zend Studio设置与开发实例
2016/09/09 PHP
phpcms的分类名称和类别名称的调用
2017/01/05 PHP
IE8下关于querySelectorAll()的问题
2010/05/13 Javascript
JavaScript对内存分配及管理机制详细解析
2013/11/11 Javascript
JQuery实现绚丽的横向下拉菜单
2013/12/19 Javascript
教你用AngularJS框架一行JS代码实现控件验证效果
2014/06/23 Javascript
理解AngularJs指令
2015/12/10 Javascript
深入解析nodejs HTTP服务
2017/07/25 NodeJs
解析Vue2 dist 目录下各个文件的区别
2017/11/22 Javascript
解决vue 格式化银行卡(信用卡)每4位一个符号隔断的问题
2018/09/14 Javascript
详解VUE单页应用骨架屏方案
2019/01/17 Javascript
js实现简单音乐播放器
2020/06/30 Javascript
用Python实现一个简单的能够上传下载的HTTP服务器
2015/05/05 Python
python实现简易版计算器
2020/06/22 Python
python3+PyQt5重新实现QT事件处理程序
2018/04/19 Python
tensorflow学习教程之文本分类详析
2018/08/07 Python
Python通用循环的构造方法实例分析
2018/12/19 Python
Python3 selenium 实现QQ群接龙自动化功能
2020/04/17 Python
Python selenium环境搭建实现过程解析
2020/09/08 Python
【HTML5】3D模型--百行代码实现旋转立体魔方实例
2016/12/16 HTML / CSS
C#实现启动一个进程
2016/10/01 面试题
《中华少年》教学反思
2014/02/15 职场文书
安全教育月活动总结
2014/05/05 职场文书
大学新闻系求职信
2014/06/03 职场文书
银行竞聘上岗演讲稿
2014/09/12 职场文书
民主生活会整改措施(党员)
2014/09/18 职场文书
学习十八大宣传标语
2014/10/09 职场文书
服务承诺书
2015/01/19 职场文书
酒店工程部主管岗位职责
2015/04/16 职场文书
2016年优秀党务工作者先进事迹材料
2016/02/29 职场文书
vue @ ~ 相对路径 路径别名设置方式
2022/06/05 Vue.js
MySQL实现字段分割一行转多行的示例代码
2022/07/07 MySQL