vue移动端实现红包雨效果


Posted in Javascript onJune 23, 2020

本文实例为大家分享了vue实现红包雨效果的具体代码,供大家参考,具体内容如下

vue移动端实现红包雨效果

下面是代码:

<template>
 <div class="ser_home">
 <ul class="red_packet" id="red_packet">
  <template v-for="(item, index) in liParams">
  <li :style="{ left: item.left, animationDuration: item.durTime, webkitAnimationDuration: item.durTime}" 
 :class="item.cls" :data-index="index" @webkitAnimationEnd="removeDom">
   <a href='javascript:;'>
   <i :style="{ transform: item.transforms, webkitTransform: item.transforms}"></i>
   </a>
  </li>
  </template>
 </ul>
 </div>
</template>


<script>
export default {
 data () {
 return {
  liParams: [],
  timer: null,
  duration: 10000 // 定义时间
 }
 },
 mounted () {
 this.startRedPacket()
 },
 methods: {
 /**
  * 开启动画
  */
 startRedPacket() {
  let win = document.documentElement.clientWidth || document.body.clientWidth
  let left = parseInt(Math.random() * (win - 50) + 0);
  
  let rotate = (parseInt(Math.random() * (45 - (-45)) - 45)) + "deg"; // 旋转角度
  let scales = (Math.random() * (12 - 8 + 1) + 8) * 0.1; // 图片尺寸
  let durTime = (Math.random() * (2.5 - 1.2 + 1) + 1.2) + 's'; // 时间 1.2和1.2这个数值保持一样
  console.log(durTime)
  this.liParams.push({left: left+'px', cls: 'move_1', transforms: 'rotate('+ rotate +') scale('+ scales +')', durTime: durTime})


  setTimeout( () => { // 多少时间结束
  clearTimeout(this.timer)
  return;
  }, this.duration)


  this.timer = setTimeout( () => {
  this.startRedPacket()
  },100) 
 },
 /**
  * 回收dom节点
  */
 removeDom (e) {
  let target = e.currentTarget;
  document.querySelector('#red_packet').removeChild(target)
 }
 }
}
</script>


<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped lang="scss">
.ser_home {
 width: 100%;
 height: 100%;
}
.red_packet {
 display: block;
 position: relative;
 overflow: hidden;
 width: 100%;
 height: 100%;
 i {
 width: 48px;
 height: 69px;
 display: block;
 background: url('/hongbao.png') no-repeat;
 }
 li {
 position: absolute;
 animation: all 3s linear;
 top:-100px;
 z-index: 10;
 &.move_1 {
  -webkit-animation: aim_move 5s linear 1 forwards;
  animation: aim_move 5s linear 1 forwards;
 }
 }
 a {
 display: block;
 }
}


@keyframes aim_move {
 0% {
 -webkit-transform: translateY(0);
 transform: translateY(0);
 }
 100% {
 -webkit-transform: translateY(120vh);
 transform: translateY(120vh);
 }
 }

</style>

效果图:

vue移动端实现红包雨效果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
xml和web特殊字符
Apr 28 Javascript
JQuery CSS样式控制 学习笔记
Jul 23 Javascript
jquery实现的一个文章自定义分段显示功能
May 23 Javascript
javascript实现table选中的行以指定颜色高亮显示的方法
May 13 Javascript
Javascript刷新窗口方法小结
Oct 21 Javascript
JavaScript模拟鼠标右键菜单效果
Dec 08 Javascript
基于javascript实现页面加载loading效果
Sep 15 Javascript
AngularJS ng-mousedown 指令
Aug 02 Javascript
浅谈Vue.js路由管理器 Vue Router
Aug 16 Javascript
解决vue打包css文件中背景图片的路径问题
Sep 03 Javascript
vue项目中实现图片预览的公用组件功能
Oct 26 Javascript
微信小程序之侧边栏滑动实现过程解析(附完整源码)
Aug 23 Javascript
vue实现学生录入系统之添加删除功能
Jul 11 #Javascript
微信小程序实现红包雨功能
Jul 11 #Javascript
小程序ios音频播放没声音问题的解决
Jul 11 #Javascript
vue 1.0 结合animate.css定义动画效果
Jul 11 #Javascript
微信小程序实现发红包功能
Jul 11 #Javascript
vue框架搭建之axios使用教程
Jul 11 #Javascript
vue中动态设置meta标签和title标签的方法
Jul 11 #Javascript
You might like
phpBB BBcode处理的漏洞
2006/10/09 PHP
php 攻击方法之谈php+mysql注射语句构造
2009/10/30 PHP
php将图片保存入mysql数据库失败的解决方法
2014/12/27 PHP
PHP中遇到的时区问题解决方法
2015/07/23 PHP
深入研究PHP中的preg_replace和代码执行
2018/08/15 PHP
PHP使用 Imagick 扩展实现图片合成,圆角处理功能示例
2019/09/09 PHP
图片自动更新(说明)
2006/10/02 Javascript
摘自启点的main.js
2008/04/20 Javascript
window.requestAnimationFrame是什么意思,怎么用
2013/01/13 Javascript
Jquery easyUI 更新行示例
2014/03/06 Javascript
jquery实现的V字形显示效果代码
2015/10/27 Javascript
javascript图片滑动效果实现
2021/01/28 Javascript
跟我学习javascript的基本类型和引用类型
2015/11/16 Javascript
基于AngularJS前端云组件最佳实践
2016/10/20 Javascript
浅谈jquery页面初始化的4种方式
2016/11/27 Javascript
Mint UI 基于 Vue.js 移动端组件库
2017/11/07 Javascript
玩转Koa之koa-router原理解析
2018/12/29 Javascript
简单通过settimeout看javascript的运行机制
2019/05/10 Javascript
ES6中的class是如何实现的(附Babel编译的ES5代码详解)
2019/05/17 Javascript
新手快速入门微信小程序组件库 iView Weapp
2019/06/24 Javascript
JS中间件设计模式的深入探讨与实例分析
2020/04/11 Javascript
vue路由的配置和页面切换详解
2020/09/09 Javascript
javascript自定义加载loading效果
2020/09/15 Javascript
用不到50行的Python代码构建最小的区块链
2017/11/16 Python
浅谈Python中函数的定义及其调用方法
2019/07/19 Python
python实现获取单向链表倒数第k个结点的值示例
2019/10/24 Python
基于python实现百度语音识别和图灵对话
2020/11/02 Python
Django websocket原理及功能实现代码
2020/11/14 Python
CSS Grid布局教程之网格单元格布局
2014/12/30 HTML / CSS
What's the difference between an interface and abstract class? (接口与抽象类有什么区别)
2012/10/29 面试题
行政专员工作职责
2013/12/22 职场文书
《三个小伙伴》教学反思
2014/04/11 职场文书
我爱读书演讲稿
2014/05/07 职场文书
奥巴马就职演讲稿
2014/05/15 职场文书
为什么MySQL不建议使用SELECT *
2022/04/03 MySQL
vue的项目如何打包上线
2022/04/13 Vue.js