js+css实现红包雨效果
本文实例为大家分享了js实现红包雨展示的具体代码,供大家参考,具体内容如下
1.html部分
红包的样子,先写一个模版在页面上
显示红包的容器
本文实例为大家分享了js实现红包雨展示的具体代码,供大家参考,具体内容如下
1.html部分
红包的样子,先写一个模版在页面上
显示红包的容器
2.js部分
const$redPackage=$('.js-RedPackage');
const$redPackageBox=$('.js-RedPackageBox');
constredPackageWidth=$redPackage.width();
constredPackageBoxWidth=$redPackageBox.width();
//因为红包有角度旋转的问题,所以需要计算一下,避免旋转之后溢出屏幕
constbasePadding=30;
constmaxLeftPx=redPackageWidth-redPackageBoxWidth-basePadding*2;
//每一个红包都是相对于父元素定位,通过z-index来设置层级
letzIndex=1;
functionbindEvent(){
$redPackage.on('click','.js-RedPackageBox',function(){
//拿到每个红包的数据
constdata=$(this).data('txt');
}
}
//生成mix-max的随机数
functiongetRandom(min,max){
returnMath.round(Math.random()*(max-min)+min);
}
//红包的移动
functionredPackageBoxSpeed($el,time){
$el.animate(
{
top:'130%',
},
time*1000,
function(){
$el.remove();
}
);
}
//生成红包
functioncreateRedPackageNode(){
const$newNode=$redPackageBox.clone(true);
//红包携带的数据
consttxt=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);
}
//红包的动态创建
functioncreateRedPackageRain(){
setInterval(()=>{
createRedPackageNode();
},300);
}
functionready(){
bindEvent();
createRedPackageRain();
}
ready();
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。