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 相关文章推荐
jQuery EasyUI API 中文文档 - MenuButton菜单按钮使用介绍
Oct 06 Javascript
JS简单实现文件上传实例代码(无需插件)
Nov 15 Javascript
httpclient模拟登陆具体实现(使用js设置cookie)
Dec 11 Javascript
JQuery.get提交页面不跳转的解决方法
Jan 13 Javascript
JavaScript控制图片加载完成后调用回调函数的方法
Mar 20 Javascript
jQuery插件扩展extend的简单实现原理
Jun 24 Javascript
js实现按钮控制带有停顿效果的图片滚动
Aug 30 Javascript
微信小程序使用wxParse解析html的方法教程
Jul 06 Javascript
React优化子组件render的使用
May 12 Javascript
vue项目实现多语言切换的思路
Sep 17 Javascript
React Ant Design树形表格的复杂增删改操作
Nov 02 Javascript
详解JavaScript中的this指向问题
Feb 05 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
改造一台复古桌面收音机
2021/03/02 无线电
php利用腾讯ip分享计划获取地理位置示例分享
2014/01/20 PHP
本地计算机无法启动Apache故障处理
2014/08/08 PHP
PHP常用日期加减计算方法实例小结
2018/07/31 PHP
Laravel使用scout集成elasticsearch做全文搜索的实现方法
2018/11/30 PHP
thinkPHP5使用Rabc实现权限管理
2019/08/28 PHP
JS IE和FF兼容性问题汇总
2009/02/09 Javascript
用Greasemonkey 脚本收藏网站会员信息到本地
2009/10/26 Javascript
JS 添加网页桌面快捷方式的代码详细整理
2012/12/27 Javascript
JQuery中使用Ajax赋值给全局变量失败异常的解决方法
2014/08/18 Javascript
javascript记录文本框内文字个数检测文字个数变化
2014/10/14 Javascript
JavaScript常用字符串与数组扩展函数小结
2016/04/24 Javascript
JS代码实现根据时间变换页面背景效果
2016/06/16 Javascript
将form表单通过ajax实现无刷新提交的简单实例
2016/10/12 Javascript
你真的了解BOM中的history对象吗
2017/02/13 Javascript
javascript 中关于array的常用方法详解
2017/05/05 Javascript
爬虫利器Puppeteer实战
2019/01/09 Javascript
js使用cookie实现记住用户名功能示例
2019/06/13 Javascript
微信公众号生成新浪短网址的实现(快速生成)
2019/08/18 Javascript
[51:17]Mineski vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.22
2019/09/05 DOTA
Python获取linux主机ip的简单实现方法
2016/04/18 Python
Pytorch对Himmelblau函数的优化详解
2020/02/29 Python
Python使用itcaht库实现微信自动收发消息功能
2020/07/13 Python
Python私有属性私有方法应用实例解析
2020/09/15 Python
香港万宁官方海外旗舰店:香港健与美连锁店
2018/09/27 全球购物
Feelunique中文官网:欧洲最大化妆品零售电商
2020/07/10 全球购物
写出SQL四条最基本的数据操作语句(DML)
2012/12/12 面试题
大学生涯自我鉴定
2014/01/16 职场文书
时尚休闲吧创业计划书
2014/01/25 职场文书
户外婚礼策划方案
2014/02/08 职场文书
优秀团员自我评价范文
2014/04/23 职场文书
幼儿评语大全
2014/04/30 职场文书
捐助倡议书
2015/01/19 职场文书
大班上学期个人总结
2015/02/13 职场文书
南极大冒险观后感
2015/06/05 职场文书
MySQL解决Navicat设置默认字符串时的报错问题
2022/06/16 MySQL