怎样实现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.巧用定时器设置属性值,可达到类似上面执行一个动画之后再执行另外一个动画的方法。

微信小程序之实现slideUp和slideDown效果和点击空白隐藏的更多相关文章

  1. 个人也能申请微信小程序获得APPID和手机测试效果

    微信小程序昨晚火爆公测,我也第一时间注册了小程序账号开启公测之旅. 注册过程可以看文档:https://my.oschina.net/imhoodoo/blog/780901 进入后台之后我们其实主要 ...

  2. 微信小程序【获取验证码】倒计时效果

    最近开始接触微信小程序,会记录一些相关的小功能——例如这次是点击[获取验证码]按钮出现的倒计时效果. 原文: http://blog.csdn.net/Wu_shuxuan/article/detai ...

  3. 微信小程序实例:实现tabs选项卡效果

    最近微信应用号是炒的如火如荼,热门满满,但是也可以发现搜索关键词出来,各类网站出现的还都是微信的官方文档解释.正好赶上这个热潮,这几天先把小程序技术文档看了个遍,就直接着手写案例了.很多组件微信内部已 ...

  4. 微信小程序H5预览页面框架(二维码不隐藏)

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  5. 微信小程序开发——文本框种输入手机号,点击获取验证码无反应的处理方法

    异常描述: 如下图,输入手机号码之后,点击右侧的获取验证码,在开发工具是OK的,真机测试无反应: 页面编码跟H5差不多的,H5没出现这个问题,但是小程序就不一样了. 异常分析: 页面结构层面,为了方便 ...

  6. 微信小程序 scroll-view 左右横向滑动没有效果(无法滑动)问题

    小程序组件 scroll-view 中分别有上下竖向滑动和左右横向滑动之分,在这次项目中刚好需要用到横向滑动,但在测试过程中发现横向滑动没有了效果(静止在那里没移动过),经调试发现: 1.scroll ...

  7. 微信小程序实现图片放大预览效果

    可以直接用微信程序自己的api很方便的实现 核心方法 wx.previewImage: 直接上代码, wxml: <!--pages/prewpicture/prew.wxml--> &l ...

  8. 微信小程序怎么做出前端table的效果

    wxml代码: <view class="container">     <view class="table">         &l ...

  9. 微信小程序-两个input叠加,多次点击字体变粗或闪动

    问题描述: 当两个input叠加,多次点击input框, placeholder 字体变粗或input框闪动.如图: 代码: <!-- 最上层input-1 --> <input p ...

随机推荐

  1. MyBatis_CURD

    一.项目结构 二.代码实现 package com.jmu.bean; public class Student { private Integer id; private String name; ...

  2. web前端开发 --好多视频大集合--文化的传播者-杜恩德

    提醒: 如果需要的话,尽快保存,说不定哪天分享就消失了呢. 1.妙味WEB前端开发全套视频教程 链接: http://pan.baidu.com/s/1bf1Ow2 密码: 2yyu 2.极客学院前端 ...

  3. intellij安装lombok插件,解决注解@Slf4j注入后找不到变量log

    1.进入设置 2.搜索插件 3.安装

  4. 【maven教程】(1)---maven环境配置

    maven环境配置 刚开始学习maven,现在项目需要用到maven,而且他确实很好用,也比较容易上手,我也是主要通过视频学习,在写博客的时候也会总结其它人所写 博客,从简到难,如果你也是初学者那接下 ...

  5. 【CSS3】边框

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  6. JavaSE项目之聊天室

    引子: 当前,互联网 体系结构的参考模型主要有两种,一种是OSI参考模型,另一种是TCP/IP参考模型. 一.OSI参考模型,即开放式通信系统互联参考模型(OSI/RM,Open Systems In ...

  7. android中的五大布局(控件的容器,可以放button等控件)

    一.android中五大布局相当于是容器,这些容器里可以放控件也可以放另一个容器,子控件和布局都需要制定属性. 1.相对布局:RelativeLayout @1控件默认堆叠排列,需要制定控件的相对位置 ...

  8. 520. Detect Capital

      Given a word, you need to judge whether the usage of capitals in it is right or not. We define the ...

  9. EL表达式隐式对象

    用户输入界面 ---------------------------------------------------------------------------------------- < ...

  10. 安装MongoDB步骤

    1.第一步是从官网下载匹配自己操作系统的安装文件或压缩文件: 2.随便找个文件夹先解压安装文件,然后在C盘根目录建立一个新文件夹命名为mongodb: 3.将打开刚刚安装的文件,将bin文件夹拷贝到C ...