本文實例為大家分享了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();
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。
新聞熱點
疑難解答