十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊
量身定制 + 運(yùn)營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
這篇文章主要介紹js+css如何實現(xiàn)紅包雨效果,文中介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們一定要看完!

具體內(nèi)容如下
1.html部分
紅包的樣子,先寫一個模版在頁面上
顯示紅包的容器
2.js部分
const $redPackage = $('.js-RedPackage');
const $redPackageBox = $('.js-RedPackageBox');
const redPackageWidth = $redPackage.width();
const redPackageBoxWidth = $redPackageBox.width();
//因為紅包有角度旋轉(zhuǎn)的問題,所以需要計算一下,避免旋轉(zhuǎn)之后溢出屏幕
const basePadding = 30;
const maxLeftPx = redPackageWidth - redPackageBoxWidth - basePadding * 2;
//每一個紅包都是相對于父元素定位,通過z-index來設(shè)置層級
let zIndex = 1;
function bindEvent() {
$redPackage.on('click', '.js-RedPackageBox', function() {
//拿到每個紅包的數(shù)據(jù)
const data = $(this).data('txt');
}
}
//生成mix-max的隨機(jī)數(shù)
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);
//紅包攜帶的數(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);
}
//紅包的動態(tài)創(chuàng)建
function createRedPackageRain() {
setInterval(() => {
createRedPackageNode();
}, 300);
}
function ready() {
bindEvent();
createRedPackageRain();
}
ready();以上是“js+css如何實現(xiàn)紅包雨效果”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!