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 相关文章推荐
使用prototype.js 的时候应该特别注意的几个问题.
Apr 12 Javascript
在chrome浏览器中,防止input[text]和textarea在聚焦时出现黄色边框的解决方法
May 24 Javascript
原生javascript获取元素样式
Dec 31 Javascript
jquery获取checkbox的值并post提交
Jan 14 Javascript
javascript模拟命名空间
Apr 17 Javascript
WordPress中利用AJAX异步获取评论用户头像的方法
Jan 08 Javascript
web 屏蔽BackSpace键实例代码
Dec 24 Javascript
Three.js利用顶点绘制立方体的方法详解
Sep 27 Javascript
新手快速入门微信小程序组件库 iView Weapp
Jun 24 Javascript
解决layer.prompt无效的问题
Sep 24 Javascript
JS工厂模式开发实践案例分析
Oct 17 Javascript
JS 基本概念详细介绍
Oct 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
Apache中php.ini的设置方法
2013/02/28 PHP
PHP中__get()和__set()的用法实例详解
2013/06/04 PHP
深入解析phpCB批量转换的代码示例
2013/06/27 PHP
PHP使用curl模拟post上传及接收文件的方法
2016/03/04 PHP
关于IE7 IE8弹出窗口顶上
2008/12/22 Javascript
读jQuery之十一 添加事件核心方法
2011/07/31 Javascript
js sort 二维数组排序的用法小结
2014/01/24 Javascript
教你用AngularJS框架一行JS代码实现控件验证效果
2014/06/23 Javascript
Javascript中this关键字的一些小知识
2015/03/15 Javascript
JavaScript使用Max函数返回两个数字中较大数的方法
2015/04/06 Javascript
跟我学习javascript的闭包
2015/11/16 Javascript
Bootstrap Table使用方法解析
2016/10/19 Javascript
vue组件编写之todolist组件实例详解
2018/01/22 Javascript
JS快速实现简单计算器
2020/04/08 Javascript
JS数据类型判断的几种常用方法
2020/07/07 Javascript
基于react项目打包css引用路径错误解决方案
2020/10/28 Javascript
跟老齐学Python之使用Python查询更新数据库
2014/11/25 Python
python导出hive数据表的schema实例代码
2018/01/22 Python
django静态文件加载的方法
2018/05/20 Python
用Python一键搭建Http服务器的方法
2018/06/01 Python
Python3爬虫使用Fidder实现APP爬取示例
2018/11/27 Python
python脚本执行CMD命令并返回结果的例子
2019/08/14 Python
Tensorflow读取并输出已保存模型的权重数值方式
2020/01/04 Python
Centos7下源码安装Python3 及shell 脚本自动安装Python3的教程
2020/03/07 Python
一篇文章搞懂python的转义字符及用法
2020/09/03 Python
美国知名户外用品畅销中心:Sierra Trading Post
2016/07/19 全球购物
俄罗斯天然和有机产品、健康生活网上商店:Fitomarket.ru
2020/10/09 全球购物
《走一步再走一步》教学反思
2014/02/15 职场文书
自动一体化专业求职信
2014/03/15 职场文书
开学典礼演讲稿
2014/05/23 职场文书
小学教师师德整改措施
2014/09/29 职场文书
工作业绩不及格检讨书
2014/10/28 职场文书
个人学习群众路线心得体会
2014/11/05 职场文书
保送生自荐信范文
2015/03/26 职场文书
php中pcntl_fork详解
2021/04/01 PHP
python中对列表的删除和添加方法详解
2022/02/24 Python