js+css实现红包雨效果
程序员文章站
2023-11-14 12:15:34
本文实例为大家分享了js实现红包雨展示的具体代码,供大家参考,具体内容如下
1.html部分
红包的样子,先写一个模版在页面上
本文实例为大家分享了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();
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: PHP基于rabbitmq操作类的生产者和消费者功能示例
下一篇: php中and 和 &&出坑指南