微信小程序实现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 相关文章推荐
jQuery寻找n以内完全数的方法
Jun 24 Javascript
Vue.js 表单校验插件
Aug 14 Javascript
微信小程序 跳转传参数与传对象详解及实例代码
Mar 14 Javascript
vue+ElementUI实现订单页动态添加产品数据效果实例代码
Jul 13 Javascript
jQuery模拟爆炸倒计时功能实例代码
Aug 21 jQuery
bootstrap table方法之expandRow-collapseRow展开或关闭当前行数据
Aug 09 Javascript
解决微信浏览器缓存站点入口文件(IIS部署Vue项目)
Jun 17 Javascript
VUEX采坑之路之获取不到$store的解决方法
Nov 08 Javascript
vue-cli3.X快速创建项目的方法步骤
Nov 14 Javascript
JS前端面试必备——基本排序算法原理与实现方法详解【插入/选择/归并/冒泡/快速排序】
Feb 24 Javascript
js实现盒子滚动动画效果
Aug 09 Javascript
小程序实现左滑删除的效果的实例代码
Oct 19 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连接Oracle数据库
2006/10/09 PHP
PHP 编写的 25个游戏脚本
2009/05/11 PHP
用php的ob_start来生成静态页面的方法分析
2011/03/09 PHP
str_replace只替换一次字符串的方法
2013/04/09 PHP
浅谈PHP强制类型转换,慎用!
2013/06/06 PHP
实例讲解PHP表单验证功能
2019/02/15 PHP
tp5.1 框架数据库常见操作详解【添加、删除、更新、查询】
2020/05/26 PHP
Jsonp 跨域的原理以及Jquery的解决方案
2010/05/18 Javascript
基于jQuery制作迷你背词汇工具
2010/07/27 Javascript
DIV始终居中的js代码
2014/02/17 Javascript
iframe窗口高度自适应的又一个巧妙实现思路
2014/04/04 Javascript
在Node.js应用中使用Redis的方法简介
2015/06/24 Javascript
在jQuery中使用$而避免跟其它库产生冲突的方法
2015/08/13 Javascript
老生常谈 js中this的指向
2016/06/30 Javascript
JS原型链 详解及示例代码
2016/09/06 Javascript
Vue.js tab实现选项卡切换
2017/05/16 Javascript
webpack 1.x升级过程中的踩坑总结大全
2017/08/09 Javascript
VUE简单的定时器实时刷新的实现方法
2019/01/20 Javascript
vue-test-utils初使用详解
2019/05/23 Javascript
vue中keep-alive内置组件缓存的实例代码
2020/04/16 Javascript
一文读懂vue动态属性数据绑定(v-bind指令)
2020/07/20 Javascript
总结用Pdb库调试Python的方式及常用的命令
2016/08/18 Python
使用Python对SQLite数据库操作
2017/04/06 Python
详解python编译器和解释器的区别
2019/06/24 Python
利用Python产生加密表和解密表的实现方法
2019/10/15 Python
python3 实现调用串口功能
2019/12/26 Python
python3 使用traceback定位异常实例
2020/03/09 Python
Python把图片转化为pdf代码实例
2020/07/28 Python
英国最受欢迎的手表网站:Watch Shop
2016/10/21 全球购物
沃达丰英国有限公司:Vodafone英国
2019/04/16 全球购物
Unix里面如何在后台运行程序
2016/10/14 面试题
学前教育教师求职自荐信
2013/09/22 职场文书
教师演讲稿范文
2014/01/08 职场文书
2019年让高校“心动”的自荐信
2019/03/25 职场文书
研究生毕业登记表的自我鉴定范文
2019/07/15 职场文书
分位数回归模型quantile regeression应用详解及示例教程
2021/11/02 Python