transition第一次不执行动画_小程序动画效果 自下往上弹起

业务里需要做动画效果,是这样的。(ps:黑色背景的星星点点的在我电脑上和真机上没有啊,这真不是我的锅)

fe0f71d66ea537a043d56bbef3001f7e.gif

其他不难,就是这个自下往上的动画效果花了点时间。

大概的思路是这样的,先把要弹起来的内容放在屏幕下面,这个用transform: translateY(400%);可以做到,同样在view的样式里声明动画效果transition: all 1s ease;

然后点击触发事件以后给这个view一个新的class名,这个class里要用transform: translateY(0);这样它就弹回原位了。

transform: translateY(400%);表示在y轴上,即垂直往下移动当前的view,到它的高度的400%的距离,比如我这个view给他的高度为400rpx,那translateY就会根据400rpx*400%来向下移动这个view的位置。

transition: all 1s ease;中all表示全部属性(其实这里只有transform属性有动画效果),1s表示1秒内完成动画,ease表示缓慢完成。

关于transition的更多说明可以查看阮一峰老师的帖子,说的简单易懂:

http://www.ruanyifeng.com/blog/2014/02/css_transition_and_animation.html

关于为什么一定要触发事件才给这个view新的样式

这是有说法的啊,如果不这么做,css会在渲染页面时就完成transform: translateY(0);这一步,即你之后点击让它弹起,它就马上在上面了,而不会有慢慢升起来这个动画。

我项目里的代码不具普适性,因此做了个简单的demo,效果是这样的。(同样的滑动后后面的那块颜色在我电脑和手机上都没有,是截图软件的锅,可以放心食用)

51b07ac43e8a715290db2c496cce0f61.gif


代码也很简单。

index.wxml:

<button bindtap="toggle">点击此处升起button><view class="upContent {{ show ? 'show' : '' }}">  <view class="upContent_mask" bindtap="toggle" />  <view class="upContent_container">    <view>此处填写你的内容view>  view>view>

index.wxss:

.upContent_mask {  position: fixed;  top: 0;  left: 0;  right: 0;  bottom: 0;  z-index: 10;  background: rgba(0, 0, 0, 0);   /*设置阴影半透明背景如:background: rgba(0, 0, 0, 0.4);*/  display: none;}.upContent_container {  position: fixed;  top: 300rpx;  width: 650rpx;    /*弹窗布局宽*/  height: 400rpx;   /*弹窗布局高,与下面弹出距离transform有关*/  margin-left: 50rpx;  background: #f8f8f8;  transform: translateY(300%);  /*弹框弹出距离,与弹框布局高度有关,如300%表示弹起距离为3倍弹窗高度 */  transition: all 1s ease;  z-index: 12;  border-radius: 20rpx;  box-shadow: 0px 3px 3px 2px gainsboro;  /*弹框的悬浮阴影效果,如不需要可注释该行*/}.show .upContent_container {  transform: translateY(0);}.show .upContent_mask {  display: block;}

index.js:

Page({  data: {    show: false  },    toggle() {    this.setData({      show: !this.data.show    });  },})

完。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值