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 document.createDocumentFragment()
Apr 04 Javascript
了解jQuery技巧来提高你的代码(个人觉得那个jquery的手册很不错)
Feb 10 Javascript
js实现幻灯片播放图片示例代码
Nov 07 Javascript
jQuery中removeProp()方法用法实例
Jan 05 Javascript
jqGrid翻页时数据选中丢失问题的解决办法
Feb 13 Javascript
AngularJS实现的根据数量与单价计算总价功能示例
Dec 26 Javascript
详解Angular2学习笔记之Html属性绑定
Jan 03 Javascript
element vue validate验证名称重复 输入框与后台重复验证 特殊字符 字符长度 及注意事项小结【实例代码】
Nov 20 Javascript
vue生命周期与钩子函数简单示例
Mar 13 Javascript
Vue中computed、methods与watch的区别总结
Apr 10 Javascript
微信小程序sessionid不一致问题解决
Aug 30 Javascript
vue实现div单选多选功能
Jul 16 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/03 咖啡文化
让你的WINDOWS同时支持MYSQL4,MYSQL4.1,MYSQL5X
2006/12/06 PHP
ThinkPHP中使用ajax接收json数据的方法
2014/12/18 PHP
php定义一个参数带有默认值的函数实例分析
2015/03/16 PHP
PHP小偷程序的设计与实现方法详解
2016/10/15 PHP
JS动画效果代码3
2008/04/03 Javascript
My Desktop :) 桌面式代码
2008/12/29 Javascript
js 函数的执行环境和作用域链的深入解析
2009/11/01 Javascript
jquery 选项卡效果 新手代码
2011/07/08 Javascript
如何使用Javascript获取距今n天前的日期
2013/07/08 Javascript
基于jquery编写分页插件
2016/03/07 Javascript
JavaScript ES6中CLASS的使用详解
2016/11/22 Javascript
Vue报错:Uncaught TypeError: Cannot assign to read only property’exports‘ of object’#‘的解决方法
2017/06/17 Javascript
jquery操作ul的一些操作笔记整理(干货)
2017/08/31 jQuery
Angular2 http jsonp的实例详解
2017/08/31 Javascript
微信小程序生成海报分享朋友圈的实现方法
2019/05/06 Javascript
微信小程序开发实现的选项卡(窗口顶部/底部TabBar)页面切换功能图文详解
2019/05/14 Javascript
JS运算符简单用法示例
2020/01/19 Javascript
使用nodeJS中的fs模块对文件及目录进行读写,删除,追加,等操作详解
2020/02/06 NodeJs
JavaScript this关键字指向常用情况解析
2020/09/02 Javascript
Python内置函数bin() oct()等实现进制转换
2012/12/30 Python
python中__call__方法示例分析
2014/10/11 Python
Python用zip函数同时遍历多个迭代器示例详解
2016/11/14 Python
Python中pandas dataframe删除一行或一列:drop函数详解
2018/07/03 Python
使用Pycharm在运行过程中,查看每个变量的操作(show variables)
2020/06/08 Python
python报错: 'list' object has no attribute 'shape'的解决
2020/07/15 Python
详解HTML5新增标签
2017/11/27 HTML / CSS
切尔西足球俱乐部官方网上商店:Chelsea FC
2019/06/17 全球购物
西铁城美国官方网站:Citizen Watch美国
2019/11/08 全球购物
英国第一的滑雪服装和装备零售商:Snow+Rock
2020/02/01 全球购物
函授自我鉴定
2013/11/06 职场文书
新闻传媒系求职信范文
2014/04/19 职场文书
2014年服务行业工作总结
2014/11/18 职场文书
2015年全国爱眼日活动方案
2015/05/05 职场文书
pytorch 梯度NAN异常值的解决方案
2021/06/05 Python
vue3引入highlight.js进行代码高亮的方法实例
2022/04/08 Vue.js