欢迎光临,了解微信小程序开发,就上易用通!

微信小程序开发之『弹出菜单』特效

发布:2018-01-24 18:29浏览: 来源:网络 作者:tianshu

先看下效果图. 

微信小程序开发之『弹出菜单』特效(图1)

 

代码: 
1.popMenu.js

 

  1. Page({
  2. data: {
  3. isPopping: false,//是否已经弹出
  4. animPlus: {},//旋转动画
  5. animCollect: {},//item位移,透明度
  6. animTranspond: {},//item位移,透明度
  7. animInput: {},//item位移,透明度
  8. },
  9. //点击弹出
  10. plus: function () {
  11. if (this.data.isPopping) {
  12. //缩回动画
  13. this.popp();
  14. this.setData({
  15. isPopping: false
  16. })
  17. } else if (!this.data.isPopping) {
  18. //弹出动画
  19. this.takeback();
  20. this.setData({
  21. isPopping: true
  22. })
  23. }
  24. },
  25. input: function () {
  26. console.log("input")
  27. },
  28. transpond: function () {
  29. console.log("transpond")
  30. },
  31. collect: function () {
  32. console.log("collect")
  33. },
  34.  
  35. //弹出动画
  36. popp: function () {
  37. //plus顺时针旋转
  38. var animationPlus = wx.createAnimation({
  39. duration: 500,
  40. timingFunction: 'ease-out'
  41. })
  42. var animationcollect = wx.createAnimation({
  43. duration: 500,
  44. timingFunction: 'ease-out'
  45. })
  46. var animationTranspond = wx.createAnimation({
  47. duration: 500,
  48. timingFunction: 'ease-out'
  49. })
  50. var animationInput = wx.createAnimation({
  51. duration: 500,
  52. timingFunction: 'ease-out'
  53. })
  54. animationPlus.rotateZ(180).step();
  55. animationcollect.translate(-100, -100).rotateZ(180).opacity(1).step();
  56. animationTranspond.translate(-140, 0).rotateZ(180).opacity(1).step();
  57. animationInput.translate(-100, 100).rotateZ(180).opacity(1).step();
  58. this.setData({
  59. animPlus: animationPlus.export(),
  60. animCollect: animationcollect.export(),
  61. animTranspond: animationTranspond.export(),
  62. animInput: animationInput.export(),
  63. })
  64. },
  65. //收回动画
  66. takeback: function () {
  67. //plus逆时针旋转
  68. var animationPlus = wx.createAnimation({
  69. duration: 500,
  70. timingFunction: 'ease-out'
  71. })
  72. var animationcollect = wx.createAnimation({
  73. duration: 500,
  74. timingFunction: 'ease-out'
  75. })
  76. var animationTranspond = wx.createAnimation({
  77. duration: 500,
  78. timingFunction: 'ease-out'
  79. })
  80. var animationInput = wx.createAnimation({
  81. duration: 500,
  82. timingFunction: 'ease-out'
  83. })
  84. animationPlus.rotateZ(0).step();
  85. animationcollect.translate(0, 0).rotateZ(0).opacity(0).step();
  86. animationTranspond.translate(0, 0).rotateZ(0).opacity(0).step();
  87. animationInput.translate(0, 0).rotateZ(0).opacity(0).step();
  88. this.setData({
  89. animPlus: animationPlus.export(),
  90. animCollect: animationcollect.export(),
  91. animTranspond: animationTranspond.export(),
  92. animInput: animationInput.export(),
  93. })
  94. },
  95.  
  96.  
  97. onLoad: function (options) {
  98. // 生命周期函数--监听页面加载
  99. },
  100. onReady: function () {
  101. // 生命周期函数--监听页面初次渲染完成
  102. },
  103. onShow: function () {
  104. // 生命周期函数--监听页面显示
  105. },
  106. onHide: function () {
  107. // 生命周期函数--监听页面隐藏
  108. },
  109. onUnload: function () {
  110. // 生命周期函数--监听页面卸载
  111. },
  112. onPullDownRefresh: function () {
  113. // 页面相关事件处理函数--监听用户下拉动作
  114. },
  115. onReachBottom: function () {
  116. // 页面上拉触底事件的处理函数
  117. },
  118. onShareAppMessage: function () {
  119. // 用户点击右上角分享
  120. return {
  121. title: 'title', // 分享标题
  122. desc: 'desc', // 分享描述
  123. path: 'path' // 分享路径
  124. }
  125. }
  126. })

2.popMenu.wxml

 

  1. <view>
  2. <image src="/pages/images/collect.png" class="img-style" animation="{{animCollect}}" bindtap="collect"></image>
  3. <image src="/pages/images/transpond.png" class="img-style" animation="{{animTranspond}}" bindtap="transpond"></image>
  4. <image src="/pages/images/input.png" class="img-style" animation="{{animInput}}" bindtap="input"></image>
  5. <image src="/pages/images/plus.png" class="img-plus-style" animation="{{animPlus}}" bindtap="plus"></image>
  6. </view>

3.popMenu.wxss

 

  1. .img-plus-style {
  2. height: 150rpx;
  3. width: 150rpx;
  4. position: absolute;
  5. bottom: 250rpx;
  6. right: 100rpx;
  7. z-index: 100;
  8. }
  9.  
  10. .img-style {
  11. height: 150rpx;
  12. width: 150rpx;
  13. position: absolute;
  14. bottom: 250rpx;
  15. right: 100rpx;
  16. opacity: 0;
  17. }





免责声明:本站所有文章和图片均来自用户分享和网络收集,文章和图片版权归原作者及原出处所有,仅供学习与参考,请勿用于商业用途,如果损害了您的权利,请联系网站客服处理。