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 相关文章推荐
很好用的js日历算法详细代码
Mar 07 Javascript
jQuery function的正确书写方法
Aug 02 Javascript
简单实用的全选反选按钮例子
Oct 18 Javascript
JS将数字转换成三位逗号分隔的样式(示例代码)
Feb 19 Javascript
javascript获取当前鼠标坐标的方法
Jan 10 Javascript
百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换
Feb 19 Javascript
用原生JS对AJAX做简单封装的实例代码
Jul 13 Javascript
Vue.2.0.5过渡效果使用技巧
Mar 16 Javascript
JS实现加载时锁定HTML页面元素的方法
Jun 24 Javascript
vue+express+jwt持久化登录的方法
Jun 14 Javascript
node运行js获得输出的三种方式示例详解
Jul 02 Javascript
React实现轮播效果
Aug 25 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学习笔记之 函数声明(二)
2011/06/09 PHP
PHP统计nginx访问日志中的搜索引擎抓取404链接页面路径
2014/06/30 PHP
php格式化json函数示例代码
2016/05/12 PHP
PHP 将dataurl转成图片image方法总结
2016/10/14 PHP
PHP crc32()函数讲解
2019/02/14 PHP
一些不错的js函数ajax
2008/08/20 Javascript
JS高级笔记
2011/07/13 Javascript
基于JavaScript实现继承机制之原型链(prototype chaining)的详解
2013/05/07 Javascript
用js代码和插件实现wordpress雪花飘落效果的四种方法
2014/12/15 Javascript
jquery实现移动端点击图片查看大图特效
2020/09/11 Javascript
仿百度换肤功能的简单实例代码
2016/07/11 Javascript
解析预加载显示图片艺术
2016/12/05 Javascript
全面解析vue中的数据双向绑定
2017/05/10 Javascript
vue加载自定义的js文件方法
2018/03/13 Javascript
Vue下滚动到页面底部无限加载数据的示例代码
2018/04/22 Javascript
Vue2.0生命周期的理解
2018/08/20 Javascript
从零开始在NPM上发布一个Vue组件的方法步骤
2018/12/20 Javascript
详解Vue-Router源码分析路由实现原理
2019/05/15 Javascript
Vue.js计算机属性computed和methods方法详解
2019/10/12 Javascript
vue 开发企业微信整合案例分析
2019/12/02 Javascript
原生js实现照片墙效果
2020/10/13 Javascript
python基于mysql实现的简单队列以及跨进程锁实例详解
2014/07/07 Python
python实现的文件夹清理程序分享
2014/11/22 Python
Python对象转JSON字符串的方法
2016/04/27 Python
Win10环境中如何实现python2和python3并存
2020/07/20 Python
简单的命令查看安装的python版本号
2020/08/28 Python
python 多线程共享全局变量的优劣
2020/09/24 Python
selenium与xpath之获取指定位置的元素的实现
2021/01/26 Python
三分钟演讲稿事例
2014/03/03 职场文书
募捐倡议书怎么写
2014/05/14 职场文书
教师节学生演讲稿
2014/09/03 职场文书
县委党的群众路线教育实践活动工作情况报告
2014/10/25 职场文书
全国爱牙日活动总结
2015/02/05 职场文书
2019生态环境保护倡议书!
2019/07/03 职场文书
Redis Cluster 字段模糊匹配及删除
2021/05/27 Redis
vue数据字典取键值项目的字典问题
2022/04/12 Vue.js