调用方式第二步:页..._电商红包弹窗 源码">
当前位置:   article > 正文

红包动画弹窗_电商红包弹窗 源码

电商红包弹窗 源码

红包动画效果 https://6465-dev-m4zlr-1300328850.tcb.qcloud.la/payMoney/bk.mp4

  1. //red_page.js文件
  2. /**
  3. * > 组件名:mask-alert
  4. * > 调用方式第一步:JSON引入"red-page":"../components/red-page/red-page"
  5. * > 调用方式第二步:页面引入<red-page></red-page>
  6. * > 开发者:老五
  7. * > 编辑时间:2019.9.25
  8. */
  9. const audio = wx.createInnerAudioContext();
  10. audio.src = 'https://gxm-ecommerce.oss-cn-shenzhen.aliyuncs.com/user_upload/rc-upload-1547213682422-20.mp3'
  11. const app = getApp()
  12. Component({
  13. properties: {
  14. /**
  15. * 显示/隐藏遮罩弹窗
  16. */
  17. modalStart: {
  18. type: Boolean,
  19. value: false
  20. },
  21. },
  22. /**
  23. * 注意:diffid[1:成功中奖弹窗;2:未中奖弹窗;]
  24. */
  25. data: {
  26. tellTitle: "",
  27. open: false,
  28. showModel: true,
  29. money:0,
  30. redId:0,
  31. shows: 'none',
  32. canceImg: "https://6465-dev-be16e9-1255326756.tcb.qcloud.la/payimg1/cance.png"
  33. },
  34. lifetimes: {
  35. /**
  36. * 默认三秒消失
  37. */
  38. attached(obj) {
  39. },
  40. ready() { },
  41. detached() { }
  42. },
  43. methods: {
  44. /**
  45. * 取消事件
  46. */
  47. getCance() {
  48. audio.stop();
  49. this.setData({
  50. modalStart: false
  51. })
  52. this.triggerEvent('getCanceRed',this.data.redId, {
  53. })
  54. },
  55. /**
  56. * 组件中传值
  57. */
  58. getOenMask: function (res) {
  59. audio.play();
  60. this.setData({
  61. open:true,
  62. shows:"block",
  63. redId:1
  64. })
  65. this.triggerEvent('getOPenselectCoupon', {
  66. })
  67. },
  68. // 显示
  69. getShow(res) {
  70. console.log("获取红包金额==>", res);
  71. this.setData({
  72. modalStart: true,
  73. money:res
  74. })
  75. },
  76. /**
  77. * 组件事件点击触发
  78. */
  79. // getOPenselectCoupon() {
  80. // this.triggerEvent('getOPenselectCoupon', {})
  81. // }
  82. }
  83. })
  1. //red_page.json
  2. {
  3. "component": true
  4. }
  1. //red_page.wxml
  2. <view class="red-packet" hidden="{{!modalStart}}" catchtouchmove="preventdefault">
  3. <view class="red-packet-layout {{ open ? 'red-packet-open' : '' }}" >
  4. <!-- 遮盖消失 -->
  5. <view class="red-packet-up" />
  6. <!-- 居中背景 -->
  7. <view class="red-packet-middle">
  8. <view class="message" style="display:{{shows}}">此红包可抵扣1v1金额</view>
  9. <view class="getGo" style="display:{{shows}}">
  10. <view class="getGoSub" bind:tap="getCance">立即使用</view>
  11. </view>
  12. </view>
  13. <!-- 红包金额 -->
  14. <view class="models" style="display:{{shows}}">{{money}}<span></span></view>
  15. <view class="red-packet-top" bind:tap="getOenMask"/>
  16. <!-- 以下是金币Icon -->
  17. <view class="red-money red-money-left1"/>
  18. <view class="red-money red-money-left2"/>
  19. <view class="red-money red-money-left3"/>
  20. <view class="red-money red-money-left4"/>
  21. <view class="red-money red-money-middle1"/>
  22. <view class="red-money red-money-middle2" />
  23. <view class="red-money red-money-middle3" />
  24. <view class="red-money red-money-middle4" />
  25. <view class="red-money red-money-right1"/>
  26. <view class="red-money red-money-right2" />
  27. <view class="red-money red-money-right3"/>
  28. <view class="red-money red-money-right4" />
  29. <view class="red-money red-money-right5" />
  30. <!-- 取消按钮 -->
  31. <view class="canceView" >
  32. <image src="{{canceImg}}" class="canceImg" bind:tap="getCance"></image>
  33. </view>
  34. </view>
  35. </view>
  1. //red_page.wxss
  2. @keyframes open-top {
  3. 0% {
  4. transform: rotateX(0);
  5. }
  6. 100% {
  7. transform: rotateX(90deg);
  8. }
  9. }
  10. @keyframes open-up {
  11. 0% {
  12. transform: rotateX(-90deg);
  13. opacity: 0.8;
  14. }
  15. 30% {
  16. transform: rotateX(-70deg);
  17. opacity: 0.5;
  18. }
  19. 50% {
  20. transform: rotateX(-50deg);
  21. opacity: 0.3;
  22. }
  23. 80% {
  24. transform: rotateX(-30deg);
  25. opacity: 0.2;
  26. }
  27. 100% {
  28. transform: rotateX(0);
  29. opacity: 0;
  30. }
  31. }
  32. .red-packet {
  33. position: fixed;
  34. top: 0;
  35. left: 0;
  36. display: flex;
  37. flex-direction: row;
  38. justify-content: center;
  39. align-items: center;
  40. width: 100%;
  41. height: 100vh;
  42. z-index: 1000;
  43. background:rgba(0,0,0,0.6);
  44. }
  45. @-webkit-keyframes move {
  46. 0%, 65% {
  47. -webkit-transform: rotate(0deg);
  48. transform: rotate(0deg);
  49. }
  50. 70% {
  51. -webkit-transform: rotate(6deg);
  52. transform: rotate(6deg);
  53. }
  54. 75% {
  55. -webkit-transform: rotate(-6deg);
  56. transform: rotate(-6deg);
  57. }
  58. 80% {
  59. -webkit-transform: rotate(6deg);
  60. transform: rotate(6deg);
  61. }
  62. 85% {
  63. -webkit-transform: rotate(-6deg);
  64. transform: rotate(-6deg);
  65. }
  66. 90% {
  67. -webkit-transform: rotate(6deg);
  68. transform: rotate(6deg);
  69. }
  70. 95% {
  71. -webkit-transform: rotate(-6deg);
  72. transform: rotate(-6deg);
  73. }
  74. 100% {
  75. -webkit-transform: rotate(0deg);
  76. transform: rotate(0deg);
  77. }
  78. }
  79. .red-packet .red-packet-layout {
  80. position: relative;
  81. bottom: 79rpx;
  82. animation: move 1s 0s infinite;
  83. -webkit-animation: move 1s 0s infinite;
  84. transform-origin: bottom;
  85. animation-iteration-count:1;
  86. -webkit-transform-origin: bottom;
  87. animation-duration: 2s;
  88. }
  89. .canceView {
  90. position: absolute;
  91. width: 100%;
  92. height: 80rpx;
  93. text-align: center;
  94. line-height: 80rpx;
  95. bottom: -100rpx;
  96. }
  97. .canceImg {
  98. display: inline-block;
  99. width: 76rpx;
  100. height: 76rpx;
  101. }
  102. .red-packet .red-packet-layout .red-packet-up {
  103. background-image: url('https://6465-dev-be16e9-1255326756.tcb.qcloud.la/payimg1/12.png');
  104. background-size: 490rpx 82rpx;
  105. width: 492rpx;
  106. height: 82rpx;
  107. transform: rotateX(-90deg);
  108. transform-origin: 50% 100%;
  109. }
  110. .models {
  111. position: absolute;
  112. width: 100%;
  113. height: 75rpx;
  114. top: 226rpx;
  115. line-height: 75rpx;
  116. font-size: 90rpx;
  117. text-align: center;
  118. font-family: Microsoft YaHei UI;
  119. font-weight: bold;
  120. color: rgba(208, 84, 59, 1);
  121. /* background: red; */
  122. }
  123. .message {
  124. position: absolute;
  125. bottom: 182rpx;
  126. height: 30rpx;
  127. width: 100%;
  128. font-size: 24rpx;
  129. text-align: center;
  130. font-family: PingFang SC;
  131. font-weight: 400;
  132. color: rgba(255, 231, 182, 1);
  133. }
  134. .getGo {
  135. position: absolute;
  136. bottom: 80rpx;
  137. width: 100%;
  138. text-align: center;
  139. height: 77rpx;
  140. line-height: 77rpx;
  141. }
  142. .getGoSub {
  143. display: inline-block;
  144. width: 353rpx;
  145. height: 77rpx;
  146. text-align: center;
  147. font-size: 32rpx;
  148. font-family: PingFang SC;
  149. font-weight: 600;
  150. color: rgba(207, 80, 57, 1);
  151. background: rgba(246, 226, 186, 1);
  152. box-shadow: 0rpx 8rpx 16rpx 0rpx rgba(211, 56, 55, 0.5);
  153. border-radius: 39rpx;
  154. }
  155. .models span {
  156. font-size: 30rpx;
  157. }
  158. .red-packet .red-packet-layout.red-packet-open .red-packet-up {
  159. animation: open-up 0.2s ease-in-out 0.2s 1 normal;
  160. animation-fill-mode: forwards;
  161. }
  162. .red-packet .red-packet-layout .red-packet-middle {
  163. background-image: url('https://6465-dev-be16e9-1255326756.tcb.qcloud.la/payimg1/14.png');
  164. background-size: 492rpx 100%;
  165. width: 492rpx;
  166. height: 639rpx;
  167. }
  168. /* 红包盖子 */
  169. .red-packet .red-packet-layout .red-packet-top {
  170. background-image: url('https://6465-dev-be16e9-1255326756.tcb.qcloud.la/payimg1/12.png');
  171. background-size: 490rpx 546rpx;
  172. width: 490rpx;
  173. height: 546rpx;
  174. position: absolute;
  175. top: 10rpx;
  176. left: 0;
  177. z-index: 101;
  178. }
  179. .red-packet .red-packet-layout.red-packet-open .red-packet-top {
  180. transform-origin: 0 200rpx;
  181. animation: open-top 0.2s ease-in-out 0s 1 normal;
  182. animation-fill-mode: forwards;
  183. }
  184. .red-packet .red-packet-layout .red-money {
  185. position: absolute;
  186. background-image: url('https://6465-dev-be16e9-1255326756.tcb.qcloud.la/payimg1/bi.png');
  187. visibility: visible;
  188. transition-property: top;
  189. transition-duration: 1s;
  190. transition-timing-function: ease-in-out;
  191. top: 0;
  192. }
  193. .red-packet .red-packet-layout .red-money.red-money-left1 {
  194. background-size: 44rpx 32rpx;
  195. width: 44rpx;
  196. height: 32rpx;
  197. left: 20rpx;
  198. top: 15rpx;
  199. transform: rotate(15deg);
  200. transition-delay: 0.1s;
  201. }
  202. .red-packet .red-packet-layout.red-packet-open .red-money.red-money-left1 {
  203. top: 350rpx;
  204. left: 50rpx;
  205. }
  206. .red-packet .red-packet-layout .red-money.red-money-left2 {
  207. background-size: 33rpx 24rpx;
  208. width: 33rpx;
  209. height: 24rpx;
  210. left: 30rpx;
  211. top: 23rpx;
  212. transform: rotate(20deg);
  213. transition-delay: 0.1s;
  214. }
  215. .red-packet .red-packet-layout.red-packet-open .red-money.red-money-left2 {
  216. top: 323rpx;
  217. left: 20rpx;
  218. }
  219. .red-packet .red-packet-layout .red-money.red-money-left3 {
  220. background-size: 33rpx 24rpx;
  221. width: 33rpx;
  222. height: 24rpx;
  223. left: 60rpx;
  224. top: 30rpx;
  225. transform: rotate(5deg);
  226. transition-delay: 0.1s;
  227. }
  228. .red-packet .red-packet-layout.red-packet-open .red-money.red-money-left3 {
  229. top: 390rpx;
  230. }
  231. .red-packet .red-packet-layout .red-money.red-money-left4 {
  232. background-size: 33rpx 24rpx;
  233. width: 33rpx;
  234. height: 24rpx;
  235. left: 90rpx;
  236. top: 20rpx;
  237. transform: rotate(9deg);
  238. transition-delay: 0.3s;
  239. animation-timing-function: cubic-bezier(0.14, -0.2, 1, 0.18);
  240. }
  241. .red-packet .red-packet-layout.red-packet-open .red-money.red-money-left4 {
  242. top: 396rpx;
  243. }
  244. .red-packet .red-packet-layout .red-money.red-money-middle1 {
  245. background-size: 90rpx 64rpx;
  246. width: 90rpx;
  247. height: 64rpx;
  248. top: 20rpx;
  249. transition-delay: 0.2s;
  250. animation-timing-function: cubic-bezier(0.14, -0.2, 1, 0.18);
  251. left: 200rpx;
  252. }
  253. .red-packet .red-packet-layout.red-packet-open .red-money.red-money-middle1 {
  254. top: 376rpx;
  255. }
  256. .red-packet .red-packet-layout .red-money.red-money-middle2 {
  257. background-size: 67rpx 48rpx;
  258. width: 67rpx;
  259. height: 48rpx;
  260. left: 160rpx;
  261. animation-timing-function: cubic-bezier(0.14, -0.2, 1, 0.18);
  262. top: 20rpx;
  263. transition-delay: 0.3s;
  264. }
  265. .red-packet .red-packet-layout.red-packet-open .red-money.red-money-middle2 {
  266. top: 349rpx;
  267. }
  268. .red-packet .red-packet-layout .red-money.red-money-middle3 {
  269. background-size: 56rpx 40rpx;
  270. width: 56rpx;
  271. height: 40rpx;
  272. left: 120rpx;
  273. animation-timing-function: cubic-bezier(0.14, -0.2, 1, 0.18);
  274. top: 20rpx;
  275. transform: rotate(10deg);
  276. transition-delay: 0.1s;
  277. }
  278. .red-packet .red-packet-layout.red-packet-open .red-money.red-money-middle3 {
  279. top: 382rpx;
  280. }
  281. .red-packet .red-packet-layout .red-money.red-money-middle4 {
  282. background-size: 56rpx 40rpx;
  283. width: 56rpx;
  284. height: 40rpx;
  285. left: 270rpx;
  286. top: 20rpx;
  287. animation-timing-function: cubic-bezier(0.14, -0.2, 1, 0.18);
  288. transition-delay: 0.4s;
  289. }
  290. .red-packet .red-packet-layout.red-packet-open .red-money.red-money-middle4 {
  291. top: 345rpx;
  292. }
  293. .red-packet .red-packet-layout .red-money.red-money-right1 {
  294. background-size: 56rpx 40rpx;
  295. width: 56rpx;
  296. height: 40rpx;
  297. top: 20rpx;
  298. right: 50rpx;
  299. animation-timing-function: cubic-bezier(0.14, -0.2, 1, 0.18);
  300. transform: rotate(-30deg);
  301. transition-delay: 0.2s;
  302. }
  303. .red-packet .red-packet-layout.red-packet-open .red-money.red-money-right1 {
  304. top: 353rpx;
  305. }
  306. .red-packet .red-packet-layout .red-money.red-money-right2 {
  307. background-size: 33rpx 24rpx;
  308. width: 33rpx;
  309. height: 24rpx;
  310. right: 26rpx;
  311. top: 20rpx;
  312. animation-timing-function: cubic-bezier(0.14, -0.2, 1, 0.18);
  313. transform: rotate(-10deg);
  314. transition-delay: 0.2s;
  315. }
  316. .red-packet .red-packet-layout.red-packet-open .red-money.red-money-right2 {
  317. top: 280rpx;
  318. }
  319. .red-packet .red-packet-layout .red-money.red-money-right3 {
  320. background-size: 33rpx 24rpx;
  321. width: 33rpx;
  322. height: 24rpx;
  323. right: 10rpx;
  324. top: 20rpx;
  325. transition-delay: 0.1s;
  326. }
  327. .red-packet .red-packet-layout.red-packet-open .red-money.red-money-right3 {
  328. top: 309rpx;
  329. }
  330. .red-packet .red-packet-layout .red-money.red-money-right4 {
  331. background-size: 44rpx 32rpx;
  332. width: 44rpx;
  333. height: 32rpx;
  334. top: 20rpx;
  335. right: 96rpx;
  336. transition-delay: 0.2s;
  337. }
  338. .red-packet .red-packet-layout.red-packet-open .red-money.red-money-right4 {
  339. top: 309rpx;
  340. }
  341. .red-packet .red-packet-layout .red-money.red-money-right5 {
  342. background-size: 44rpx 32rpx;
  343. width: 45rpx;
  344. height: 65rpx;
  345. top: 20rpx;
  346. right: 115rpx;
  347. transition-delay: 0.2s;
  348. -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
  349. animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
  350. }
  351. .red-packet .red-packet-layout.red-packet-open .red-money.red-money-right5 {
  352. top: 356rpx;
  353. }

 

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/284059
推荐阅读
相关标签
  

闽ICP备14008679号