首页 > 开发 > JS > 正文

js+css实现红包雨效果

2024-05-06 16:45:11
字体:
来源:转载
供稿:网友

本文实例为大家分享了js实现红包雨展示的具体代码,供大家参考,具体内容如下

1.html部分

红包的样子,先写一个模版在页面上

 <div class="hide"> <div class="RedPackage__Box js-RedPackageBox" data-txt>  <img src="./images/redPackage.png" </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();

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持VeVb武林网。


注:相关教程知识阅读请移步到JavaScript/Ajax教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表