本文實(shí)例為大家分享了js實(shí)現(xiàn)紅包雨展示的具體代碼,供大家參考,具體內(nèi)容如下
1.html部分
紅包的樣子,先寫一個(gè)模版在頁(yè)面上
<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();//因?yàn)榧t包有角度旋轉(zhuǎn)的問(wèn)題,所以需要計(jì)算一下,避免旋轉(zhuǎn)之后溢出屏幕const basePadding = 30;const maxLeftPx = redPackageWidth - redPackageBoxWidth - basePadding * 2; //每一個(gè)紅包都是相對(duì)于父元素定位,通過(guò)z-index來(lái)設(shè)置層級(jí)let zIndex = 1; function bindEvent() { $redPackage.on('click', '.js-RedPackageBox', function() { //拿到每個(gè)紅包的數(shù)據(jù) const data = $(this).data('txt'); }} //生成mix-max的隨機(jī)數(shù)function getRandom(min, max) { return Math.round(Math.random() * (max - min) + min);} //紅包的移動(dòng)function redPackageBoxSpeed($el, time) { $el.animate( { top: '130%', }, time * 1000, function() { $el.remove(); } );} //生成紅包function createRedPackageNode() { const $newNode = $redPackageBox.clone(true); //紅包攜帶的數(shù)據(jù) const txt = keyList.shift(); keyList.push(txt); $newNode.attr('data-txt', JSON.stringify(txt)); //紅包隨機(jī)旋轉(zhuǎn)-30~30度 $newNode.css({ 'z-index': zIndex++, left: getRandom(basePadding, maxLeftPx) + 'px', transform: 'rotate(' + getRandom(-30, 30) + 'deg)', }); $redPackage.append($newNode); redPackageBoxSpeed($newNode, 4);} //紅包的動(dòng)態(tài)創(chuàng)建function createRedPackageRain() { setInterval(() => { createRedPackageNode(); }, 300);} function ready() { bindEvent(); createRedPackageRain();} ready();
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注