js+css实现红包雨效果


Posted in Javascript onJuly 12, 2018

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

1.html部分

红包的样子,先写一个模版在页面上

<div class="hide">
 <div class="RedPackage__Box js-RedPackageBox" data-txt>
  <img src="./images/redPackage.png" alt="">
 </div>
</div>

显示红包的容器

<div class="RedPackage__Main js-RedPackage"></div>

2.js部分

const $redPackage = $('.js-RedPackage');
const $redPackageBox = $('.js-RedPackageBox');
const redPackageWidth = $redPackage.width();
const redPackageBoxWidth = $redPackageBox.width();
//因为红包有角度旋转的问题,所以需要计算一下,避免旋转之后溢出屏幕
const basePadding = 30;
const maxLeftPx = redPackageWidth - redPackageBoxWidth - basePadding * 2;
 
//每一个红包都是相对于父元素定位,通过z-index来设置层级
let zIndex = 1;
 
function bindEvent() {
 $redPackage.on('click', '.js-RedPackageBox', function() {
 //拿到每个红包的数据
 const data = $(this).data('txt');
 }
}
 
//生成mix-max的随机数
function getRandom(min, max) {
 return Math.round(Math.random() * (max - min) + min);
}
 
//红包的移动
function redPackageBoxSpeed($el, time) {
 $el.animate(
 {
 top: '130%',
 },
 time * 1000,
 function() {
 $el.remove();
 }
 );
}
 
//生成红包
function createRedPackageNode() {
 const $newNode = $redPackageBox.clone(true);
 //红包携带的数据
 const txt = keyList.shift();
 keyList.push(txt);
 $newNode.attr('data-txt', JSON.stringify(txt));
 
 //红包随机旋转-30~30度
 $newNode.css({
 'z-index': zIndex++,
 left: getRandom(basePadding, maxLeftPx) + 'px',
 transform: 'rotate(' + getRandom(-30, 30) + 'deg)',
 });
 $redPackage.append($newNode);
 
 redPackageBoxSpeed($newNode, 4);
}
 
//红包的动态创建
function createRedPackageRain() {
 setInterval(() => {
 createRedPackageNode();
 }, 300);
}
 
function ready() {
 bindEvent();
 createRedPackageRain();
}
 
ready();

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

Javascript 相关文章推荐
javascript 文本框水印/占位符(watermark/placeholder)实现方法
Jan 15 Javascript
js实现window.open不被拦截的解决方法汇总
Oct 30 Javascript
详谈JavaScript 匿名函数及闭包
Nov 14 Javascript
jquery获取多个checkbox的值异步提交给php
Jul 07 Javascript
jQuery实现tab选项卡效果的方法
Jul 08 Javascript
JavaScript setTimeout使用闭包功能实现定时打印数值
Dec 18 Javascript
jQuery实现简单倒计时功能的方法
Jul 04 Javascript
AngularJs Understanding the Controller Component
Sep 02 Javascript
JS实现手写parseInt的方法示例
Sep 24 Javascript
详解webpack自定义loader初探
Aug 29 Javascript
详解Vue改变数组中对象的属性不重新渲染View的解决方案
Sep 21 Javascript
微信小程序订阅消息(java后端实现)开发
Jun 01 Javascript
基于vue cli 通过命令行传参实现多环境配置
Jul 12 #Javascript
vue内置组件transition简单原理图文详解(小结)
Jul 12 #Javascript
vue-resource请求实现http登录拦截或者路由拦截的方法
Jul 11 #Javascript
vue.js实现的经典计算器/科学计算器功能示例
Jul 11 #Javascript
Vue.js实现的计算器功能完整示例
Jul 11 #Javascript
JavaScript类的继承方法小结【组合继承分析】
Jul 11 #Javascript
React中嵌套组件与被嵌套组件的通信过程
Jul 11 #Javascript
You might like
thinkphp 多表 事务详解
2013/06/17 PHP
PHP语法自动检查的Vim插件
2014/08/11 PHP
限制复选框的最大可选数
2006/07/01 Javascript
jQuery 源代码显示控件 (Ajax加载方式).
2009/05/18 Javascript
子窗口、父窗口和Silverlight之间的相互调用
2010/08/16 Javascript
Javascript基础教程之数据类型 (数值 Number)
2015/01/18 Javascript
JavaScript实现的SHA-1加密算法完整实例
2016/02/02 Javascript
Bootstrap CDN和本地化环境搭建
2016/10/26 Javascript
Vue系列:通过vue-router如何传递参数示例
2017/01/16 Javascript
js实现时钟定时器
2020/03/26 Javascript
el-table表头根据内容自适应完美解决表头错位和固定列错位
2021/01/07 Javascript
[01:13:01]2018DOTA2亚洲邀请赛 4.4 淘汰赛 TNC vs VG 第三场
2018/04/05 DOTA
Python2.5/2.6实用教程 入门基础篇
2009/11/29 Python
详解Python中find()方法的使用
2015/05/18 Python
使用PyV8在Python爬虫中执行js代码
2017/02/16 Python
Python中is与==判断的区别
2017/03/28 Python
python机器学习实战之K均值聚类
2017/12/20 Python
基于python内置函数与匿名函数详解
2018/01/09 Python
Python调用C语言的实现
2019/07/26 Python
pygame实现五子棋游戏
2019/10/29 Python
Python通过kerberos安全认证操作kafka方式
2020/06/06 Python
通俗讲解python 装饰器
2020/09/07 Python
英国第二大营养品供应商:Vitabiotics
2016/10/01 全球购物
BIBLOO捷克:购买女装、男装、童装、鞋和配件
2017/01/27 全球购物
英国经典球衣网站:Classic Football Shirts
2017/05/20 全球购物
简述安装Slackware Linux系统的过程
2012/01/12 面试题
竞选班长演讲稿
2013/12/30 职场文书
党员批评与自我批评范文
2014/09/23 职场文书
官僚主义现象查摆问题整改措施
2014/10/04 职场文书
个人工作总结范文2014
2014/11/07 职场文书
高校教师个人工作总结2014
2014/12/17 职场文书
优秀学生干部事迹材料
2014/12/24 职场文书
专业技术职务聘任证明
2015/03/02 职场文书
司机岗位职责范本
2015/04/10 职场文书
laravel添加角色和模糊搜索功能的实现代码
2021/06/22 PHP
python实现剪贴板的操作
2021/07/01 Python