186 lines
4.7 KiB
HTML
186 lines
4.7 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>
|
|
<style>
|
|
* {
|
|
margin: 0;
|
|
padding: 0;
|
|
}
|
|
|
|
body {
|
|
height: 100%;
|
|
position: relative;
|
|
height: 100vh;
|
|
overflow: hidden;
|
|
}
|
|
|
|
img {
|
|
position: absolute;
|
|
width: 80px;
|
|
/* transition: all 0.2s; */
|
|
}
|
|
|
|
.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>
|
|
</head>
|
|
|
|
<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; // 保存创建红包的定时器
|
|
|
|
// 创建红包的方法
|
|
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)
|
|
}
|
|
|
|
body.appendChild(img)
|
|
motion(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")
|
|
// 让页面上的其他红包重新运动起来
|
|
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()
|
|
|
|
function $(className) {
|
|
return document.querySelector(className)
|
|
}
|
|
</script>
|
|
|
|
</html> |