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 位置插件
Dec 25 Javascript
jQuery对象与DOM对象之间的转换方法
Apr 15 Javascript
jquery实现的一个简单进度条效果实例
May 12 Javascript
jquery通过load获取文件的内容并跳到锚点的方法
Jan 29 Javascript
jQuery实现的数值范围range2dslider选取插件特效多款代码分享
Aug 27 Javascript
Bootstrap Paginator分页插件使用方法详解
May 30 Javascript
懒加载实现的分页&amp;&amp;网站footer自适应
Dec 21 Javascript
JavaScript中 DOM操作方法小结
Apr 25 Javascript
初探JavaScript 面向对象(推荐)
Sep 03 Javascript
用node-webkit把web应用打包成桌面应用(windows环境)
Feb 01 Javascript
node.js基础知识小结
Feb 26 Javascript
一个Java程序猿眼中的前后端分离以及Vue.js入门(推荐)
Apr 19 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二维数组排序方法(array_multisort usort)
2013/12/25 PHP
zend framework框架中url大小写问题解决方法
2014/08/19 PHP
初识Laravel
2014/10/30 PHP
Zend Framework教程之模型Model用法简单实例
2016/03/04 PHP
js树形控件脚本代码
2008/07/24 Javascript
6个DIV 135或246间隔一秒轮番显示效果
2010/07/24 Javascript
JavaScript中的16进制字符(改进)
2011/11/21 Javascript
JS 获取滚动条高度示例代码
2013/10/24 Javascript
轻松创建nodejs服务器(2):nodejs服务器的构成分析
2014/12/18 NodeJs
js实现仿百度瀑布流的方法
2015/02/05 Javascript
jQuery源码分析之Callbacks详解
2015/03/13 Javascript
javascript图片延迟加载实现方法及思路
2015/12/31 Javascript
sea.js常用的api简易文档
2016/11/15 Javascript
Javascript设计模式之装饰者模式详解篇
2017/01/17 Javascript
Angular.js初始化之ng-app的自动绑定与手动绑定详解
2017/07/31 Javascript
Angular使用 ng-img-max 调整浏览器中的图片的示例代码
2017/08/17 Javascript
如何在vue中使用ts的示例代码
2018/02/28 Javascript
讲解vue-router之命名路由和命名视图
2018/05/28 Javascript
理解JavaScript中的对象
2020/08/25 Javascript
[01:05:59]Mineski vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.22
2019/09/05 DOTA
python实现简单ftp客户端的方法
2015/06/28 Python
python3 实现对图片进行局部切割的方法
2018/12/05 Python
Python+OpenCV图片局部区域像素值处理详解
2019/01/23 Python
python快速编写单行注释多行注释的方法
2019/07/31 Python
python 使用pygame工具包实现贪吃蛇游戏(多彩版)
2019/10/30 Python
python中rc1什么意思
2020/06/19 Python
html5唤醒APP小记
2019/03/27 HTML / CSS
Bitiba意大利:在线宠物商店
2020/10/31 全球购物
PHP面试题-$message和$$message的区别
2015/12/08 面试题
大学生军训自我评价分享
2013/11/09 职场文书
小学生2014国庆节演讲稿:祖国在我心中
2014/09/21 职场文书
2014年纳税评估工作总结
2014/12/23 职场文书
消防演习通知
2015/04/25 职场文书
初婚初育证明范本
2015/06/18 职场文书
JS数组方法some、every和find的使用详情
2021/10/05 Javascript
动态规划之使用备忘录来改进Javascript函数
2022/04/07 Javascript