202 lines
5.0 KiB
HTML
202 lines
5.0 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>红包雨</title>
|
|
</head>
|
|
<style>
|
|
* {
|
|
margin: 0;
|
|
padding: 0;
|
|
}
|
|
|
|
body {
|
|
height: 100%;
|
|
position: relative;
|
|
height: 100vh;
|
|
overflow: hidden;
|
|
}
|
|
|
|
img {
|
|
width: 80px;
|
|
position: absolute;
|
|
|
|
}
|
|
|
|
.alert {
|
|
position: fixed;
|
|
width: 100%;
|
|
height: 100%;
|
|
background: #0000008f;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
z-index: 8;
|
|
|
|
}
|
|
|
|
.alert .alert_warp {
|
|
width: 32%;
|
|
background: #fff;
|
|
height: 300px;
|
|
padding: 15px;
|
|
box-sizing: border-box;
|
|
display: flex;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.alert_warp .alert_title {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
height: 45px;
|
|
align-items: center;
|
|
border-bottom: 1px solid #e6e6e6;
|
|
}
|
|
|
|
.alert_title span {}
|
|
|
|
.alert_body {
|
|
flex: 1;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
}
|
|
|
|
.hidden {
|
|
display: none;
|
|
}
|
|
</style>
|
|
|
|
<body>
|
|
<div class="alert hidden">
|
|
<div class="alert_warp">
|
|
<div class="alert_title">
|
|
<span>恭喜中奖</span>
|
|
<span class="close">x</span>
|
|
</div>
|
|
<div class="alert_body">
|
|
恭喜抽中9折优惠券
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</body>
|
|
<script>
|
|
//随机生成红包+红包移动
|
|
//点击开红包,红包点击时间,暂停红包,关闭弹窗时红包重新运动
|
|
var clientWidth = $("body").clientWidth, // 获取屏幕宽度
|
|
clientHeight = $("body").clientHeight, // 获取屏幕高度
|
|
alert = $(".alert"),
|
|
text = $(".alert_body"),
|
|
close = $(".alert_title .close"),
|
|
clickImg = null,// 保存你点击的图片的虚拟dom对象
|
|
body = $('body'),
|
|
createdId = null;// 保存创建红包的定时器
|
|
|
|
//var x = parseInt(Math.random() * (clientWidth - 80))//随机获取x坐标
|
|
//创建红包方法
|
|
function createdHb() {
|
|
var x = parseInt(Math.random() * (clientWidth - 80))
|
|
var img = document.createElement('img'); //创建红包时间和地址
|
|
img.src = './hb.png'
|
|
img.style = `
|
|
left :${x}px;
|
|
top:-105px;
|
|
`
|
|
//点击弹窗
|
|
img.onclick = function () {
|
|
|
|
clickImg = img;
|
|
probability()
|
|
alert.classList.remove("hidden")
|
|
// 停止生成红包
|
|
clearInterval(createdId)
|
|
// 停止页面上所有红包
|
|
allImgAction(2)
|
|
|
|
// var allImg = document.querySelectorAll('img') //获取所有的图片
|
|
// allImg.forEach(function (v) {
|
|
// clearInterval(v.num)
|
|
// })
|
|
|
|
// clearInterval(img.num)
|
|
}
|
|
|
|
|
|
body.appendChild(img) //插入红包事件
|
|
motion(img)
|
|
//console.log(img);
|
|
|
|
}
|
|
|
|
function motion(el) {
|
|
// 设置定时器让红包移动起来
|
|
el.num = setInterval(function () {
|
|
|
|
var topSet = parseInt(el.style.top) + 1
|
|
el.style.top = `${topSet}px`
|
|
// 超过屏幕高度删除
|
|
if (topSet > clientHeight) {
|
|
$("body").removeChild(el)
|
|
clearInterval(el.num)
|
|
}
|
|
}, 6)
|
|
}
|
|
//关闭弹窗
|
|
close.onclick = function () {
|
|
// 删除你点击的红包
|
|
$("body").removeChild(clickImg)
|
|
alert.classList.add("hidden")
|
|
// var allImg = document.querySelectorAll('img') //获取所有的图片
|
|
// allImg.forEach(function (v) {
|
|
// motion(v)
|
|
//})
|
|
// 让页面上的其他红包重新运动起来
|
|
allImgAction(1)
|
|
// 开始重新创建红包
|
|
autoCreated()
|
|
|
|
// 计算概率
|
|
}
|
|
function probability() {
|
|
var prob = Math.random();
|
|
if (prob <= 0.021) {
|
|
text.innerText = `${prob}恭喜您中了 1 折优惠券`
|
|
} else if (0.021 < prob && prob <= 0.8) {
|
|
text.innerText = `${prob}恭喜您中了 7 折优惠券`
|
|
} else if (prob > 0.8) {
|
|
text.innerText = `${prob}恭喜您中了 3 折优惠券`
|
|
}
|
|
}
|
|
|
|
function allImgAction(type) {
|
|
var allImg = document.querySelectorAll("img");
|
|
allImg.forEach(function (v) {
|
|
type == 1 ? motion(v) : clearInterval(v.num)
|
|
})
|
|
}
|
|
|
|
|
|
function autoCreated() {
|
|
createdId = setInterval(function () {
|
|
createdHb()
|
|
}, 1000)
|
|
}
|
|
autoCreated()
|
|
// createdId=setInterval(function () {
|
|
// createdHb()
|
|
// }, 1000)
|
|
|
|
|
|
|
|
function $(className) {
|
|
return document.querySelector(className) //封装统一类名
|
|
}
|
|
|
|
|
|
</script>
|
|
|
|
|
|
</html> |