最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

vue移动端实现红包雨效果

来源:动视网 责编:小OO 时间:2020-11-27 22:11:43
文档

vue移动端实现红包雨效果

本文实例为大家分享了vue实现红包雨效果的具体代码,供大家参考,具体内容如下:下面是代码。<;template>;<;div class="ser_home">;<;ul class="red_packet" id="red_packet">;<;template v-for="(item.index) in liParams">;<;<;a href='javascript:;'>;<;i :style="{ transform: item.transforms.webkitTransform: item.transforms}">;<;/i>;<;/a>;<;/li>;<;<。
推荐度:
导读本文实例为大家分享了vue实现红包雨效果的具体代码,供大家参考,具体内容如下:下面是代码。<;template>;<;div class="ser_home">;<;ul class="red_packet" id="red_packet">;<;template v-for="(item.index) in liParams">;<;<;a href='javascript:;'>;<;i :style="{ transform: item.transforms.webkitTransform: item.transforms}">;<;/i>;<;/a>;<;/li>;<;<。


本文实例为大家分享了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移动端实现红包雨效果

本文实例为大家分享了vue实现红包雨效果的具体代码,供大家参考,具体内容如下:下面是代码。<;template>;<;div class="ser_home">;<;ul class="red_packet" id="red_packet">;<;template v-for="(item.index) in liParams">;<;<;a href='javascript:;'>;<;i :style="{ transform: item.transforms.webkitTransform: item.transforms}">;<;/i>;<;/a>;<;/li>;<;<。
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top