这篇文章主要介绍js+css如何实现红包雨效果,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
具体内容如下
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();
以上是“js+css如何实现红包雨效果”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。