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 相关文章推荐
js 颜色选择器(兼容firefox)
Mar 05 Javascript
jquery json 实例代码
Dec 02 Javascript
jQuery prototype冲突的2种解决方法(附demo示例下载)
Jan 21 Javascript
利用javascript实现的三种图片放大镜效果实例(附源码)
Jan 23 Javascript
iscroll动态加载数据完美解决方法
Jul 18 Javascript
基于JavaScript实现新增内容滚动播放效果附完整代码
Aug 24 Javascript
vue.js vue-router如何实现无效路由(404)的友好提示
Dec 20 Javascript
AngularJS对动态增加的DOM实现ng-keyup事件示例
Mar 12 Javascript
使用vuex的state状态对象的5种方式
Apr 19 Javascript
JavaScript函数式编程(Functional Programming)箭头函数(Arrow functions)用法分析
May 22 Javascript
vue 解决路由只变化参数页面组件不更新问题
Nov 05 Javascript
微信小程序连接服务器展示MQTT数据信息的实现
Jul 14 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
PHP实现的简单日历类
2014/11/29 PHP
PHP实现删除多重数组对象属性并重新赋值的方法
2017/06/07 PHP
网页自动跳转代码收集
2009/09/27 Javascript
键盘 keycode的值 javascript时触发事件时很有用的要素
2009/11/02 Javascript
基于jquery &amp; json的省市区联动代码
2012/06/26 Javascript
JavaScript获取图片真实大小代码实例
2014/09/24 Javascript
使用jQuery jqPlot插件绘制柱状图
2014/12/18 Javascript
Jquery on方法绑定事件后执行多次的解决方法
2016/06/02 Javascript
Bootstrap的Refresh Icon也spin起来
2016/07/13 Javascript
jQuery+正则+文本框只能输入数字的实现方法
2016/10/07 Javascript
微信小程序 wxapp地图 map详解
2016/10/31 Javascript
微信小程序 配置文件详细介绍
2016/12/14 Javascript
jQuery实现圣诞节礼物传送(花式轮播)
2016/12/25 Javascript
基于JavaScript实现移动端无限加载分页
2017/03/27 Javascript
Angular2开发——组件规划篇
2017/03/28 Javascript
bootstrap3使用bootstrap datetimepicker日期插件
2017/05/24 Javascript
javaScript 连接打印机,打印小票的实例
2017/12/29 Javascript
详解webpack 打包文件体积过大解决方案(code splitting)
2018/04/10 Javascript
[00:32]2018DOTA2亚洲邀请赛Secret出场
2018/04/03 DOTA
[54:17]DOTA2-DPC中国联赛定级赛 RNG vs iG BO3第二场 1月10日
2021/03/11 DOTA
python选择排序算法实例总结
2015/07/01 Python
Python通过90行代码搭建一个音乐搜索工具
2015/07/29 Python
Python实现对象转换为xml的方法示例
2017/06/08 Python
Python基于Logistic回归建模计算某银行在降低贷款拖欠率的数据示例
2019/01/23 Python
python实现车牌识别的示例代码
2019/08/05 Python
Python实现二叉树的最小深度的两种方法
2019/09/30 Python
VSCode基础使用与VSCode调试python程序入门的图文教程
2020/03/30 Python
Python3爬虫里关于识别微博宫格验证码的知识点详解
2020/07/30 Python
python opencv实现图像配准与比较
2021/02/09 Python
纯CSS3实现扇形动画菜单(简化版)实例源码
2017/01/17 HTML / CSS
印度最好的在线药品订购网站:PharmEasy
2018/11/30 全球购物
Tommy Hilfiger美国官网:美国高端休闲领导品牌
2019/01/14 全球购物
劳动竞赛活动方案
2014/02/20 职场文书
纪念九一八事变演讲稿:忘记意味着背叛
2014/09/14 职场文书
使用GO语言实现Mysql数据库CURD的简单示例
2021/08/07 Golang
一文搞懂Golang 时间和日期相关函数
2021/12/06 Golang