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 Event事件学习第一章 Event介绍
Feb 07 Javascript
jQuery调用WebService的实现代码
Jun 19 Javascript
你必须知道的Javascript知识点之&quot;字面量和对应类型&quot;说明介绍
Apr 23 Javascript
js实现字符串的16进制编码不加密
Apr 25 Javascript
解决js函数闭包内存泄露问题的办法
Jan 25 Javascript
canvas绘图不清晰的解决方案
Feb 28 Javascript
Angular2 组件交互实例详解
Aug 24 Javascript
Webpack 之 babel-loader文件预处理器详解
Mar 23 Javascript
使用JS获取页面上的所有标签
Oct 18 Javascript
jquery ui 实现 tab标签功能示例【测试可用】
Jul 25 jQuery
Js和VUE实现跑马灯效果
May 25 Javascript
AJAX学习笔记
May 18 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 shell超强免杀、减少体积工具实现代码
2012/10/16 PHP
使用PHP实现下载CSS文件中的图片
2015/12/06 PHP
php自定义函数实现JS的escape的方法示例
2016/07/07 PHP
PHP中多线程的两个实现方法
2016/10/14 PHP
php+ajax+json 详解及实例代码
2016/12/12 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
2020/02/28 PHP
YII2框架中actions的作用与使用方法示例
2020/03/13 PHP
javascript 有趣而诡异的数组
2009/04/06 Javascript
Jquery:ajax实现翻页无刷新功能代码
2013/08/05 Javascript
js加载读取内容及显示与隐藏div示例
2014/02/13 Javascript
详解js中常规日期格式处理、月历渲染和倒计时函数
2016/12/28 Javascript
Angular使用$http.jsonp发送跨站请求的方法
2017/03/16 Javascript
学习使用Bootstrap页面排版样式
2017/05/11 Javascript
vue-scroller记录滚动位置的示例代码
2018/01/17 Javascript
js+canvas实现滑动拼图验证码功能
2018/03/26 Javascript
JS脚本实现定时到网站上签到/签退功能
2020/04/22 Javascript
JS如何调用WebAssembly编译出来的.wasm文件
2020/11/05 Javascript
Python WXPY实现微信监控报警功能的代码
2017/10/20 Python
python list等分并从等分的子集中随机选取一个数
2020/11/16 Python
Html5页面中的返回实现的方法
2018/02/26 HTML / CSS
amazeui 验证按钮扩展的实现
2020/08/21 HTML / CSS
凯特方迪化妆品官网:Kat Von D Beauty
2016/11/15 全球购物
全球知名的婚恋交友网站:Match.com
2017/01/05 全球购物
WoolOvers澳洲官方网站:英国针织服装公司
2018/05/13 全球购物
DERMAdoctor官网:美国著名皮肤护理品牌
2019/07/06 全球购物
中层竞聘演讲稿
2014/01/09 职场文书
第二课堂活动总结
2014/05/07 职场文书
装修活动策划方案
2014/08/27 职场文书
高中学校对照检查材料
2014/08/31 职场文书
法人授权委托书样本
2014/09/19 职场文书
抗洪救灾标语
2014/10/08 职场文书
2015年中学元旦晚会活动方案
2014/12/09 职场文书
高中生毕业评语
2014/12/30 职场文书
大学生团员个人总结
2015/02/14 职场文书
护士实习自荐信
2015/03/06 职场文书
分享7个 Python 实战项目练习
2022/03/03 Python