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实现画板的代码
Sep 05 Javascript
JavaScript面向对象(极简主义法minimalist approach)
Jul 17 Javascript
angularjs 处理多个异步请求方法汇总
Jan 06 Javascript
jQuery中hasClass()方法用法实例
Jan 06 Javascript
jquery实现带缩略图的可定制高度画廊效果(5种)
Aug 28 Javascript
jQuery实现浏览器之间跳转并传递参数功能【支持中文字符】
Mar 28 jQuery
javascript获取元素的计算样式
May 24 Javascript
vue移动端实现手机左右滑动入场动画
Jun 17 Javascript
JS实现点星星消除小游戏
Mar 24 Javascript
nuxt.js添加环境变量,区分项目打包环境操作
Nov 06 Javascript
JS模拟实现京东快递单号查询
Nov 30 Javascript
vue项目打包后路由错误的解决方法
Apr 13 Vue.js
基于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 7的一些引人注目的新特性简单介绍
2015/11/08 PHP
php微信公众账号开发之前五个坑(一)
2016/09/18 PHP
PHP中使用jQuery+Ajax实现分页查询多功能操作(示例讲解)
2017/09/17 PHP
ThinkPHP5+UEditor图片上传到阿里云对象存储OSS功能示例
2019/08/05 PHP
javascript 学习笔记(一)DOM基本操作
2011/04/08 Javascript
js实现双向链表互联网机顶盒实战应用实现
2011/10/28 Javascript
jQuery学习笔记之2个小技巧
2015/01/19 Javascript
JavaScript中的this关键字使用方法总结
2015/03/13 Javascript
Javascript表单特效之十大常用原理性样例代码大总结
2016/07/12 Javascript
浅谈Vue.js
2017/03/02 Javascript
Bootstrap学习笔记 轮播(Carousel)插件
2017/03/21 Javascript
laravel5.4+vue+element简单搭建的示例代码
2017/08/29 Javascript
探讨Vue.js的组件和模板
2017/10/27 Javascript
js定时器实现倒计时效果
2017/11/05 Javascript
js传递数组参数到后台controller的方法
2018/03/29 Javascript
vue组件的写法汇总
2018/04/12 Javascript
vue实现信息管理系统
2020/05/30 Javascript
Python实现的下载网页源码功能示例
2017/06/13 Python
Python 操作文件的基本方法总结
2017/08/10 Python
Python数据结构之单链表详解
2017/09/12 Python
python2与python3共存问题的解决方法
2018/09/18 Python
Python实现的对本地host127.0.0.1主机进行扫描端口功能示例
2019/02/15 Python
pytorch使用tensorboardX进行loss可视化实例
2020/02/24 Python
pycharm中import呈现灰色原因的解决方法
2020/03/04 Python
美国孩之宝玩具官网:Hasbro Pulse
2019/06/24 全球购物
Final类有什么特点
2012/04/25 面试题
毕业生个人的求职信范文
2013/12/03 职场文书
《燕子》教学反思
2014/02/18 职场文书
幼儿园大班开学教师寄语
2014/04/03 职场文书
辞旧迎新演讲稿
2014/09/15 职场文书
工作散漫检讨书
2014/09/16 职场文书
思想纪律作风整顿剖析材料
2014/10/11 职场文书
庆六一开幕词
2015/01/29 职场文书
学校节水倡议书
2015/04/29 职场文书
举起手来观后感
2015/06/09 职场文书
三八妇女节致辞
2015/07/31 职场文书