博主最近有点忙哈 一直在搞项目 看到粉丝私信一直在催更 我这边也是一有空就会开始分享啦 希望大家多多海涵~
接下来就是大家喜闻乐见的代码环节
首先是HTML部分:
<div class="biggest_box">
<div class="smaller_box">
<p>商品一</p>
</div>
<div class="smaller_box_two">
<p>商品二</p>
</div>
<div class="smaller_box_three">
<p>商品三</p>
</div>
<div class="smaller_box_four">
<p>商品四</p>
</div>
<div class="smaller_box_five">
<p>商品五</p>
</div>
<div class="smaller_box_six">
<p>商品六</p>
</div>
<div class="smaller_box_seven">
<p>商品七</p>
</div>
<div class="smaller_box_eight">
<p>没抽到</p>
</div>
<button class="smaller_box_nine" style="border: none;">
<p>点击开冲</p>
</button>
</div>
其次是css样式
这里需要注意的是 因为代码都是从上往下解析的 所以按顺序写的格式如果开始执行抽奖的话顺序会乱掉 所以这里就要用到浮动的方法就可以很简单的解决掉这个问题
按照顺序分别定位到合适位置 例如:
1 2 3
8 4
7 6 5
* {
margin: 0;
padding: 0;
}
.biggest_box {
width: 500px;
height: 500px;
border: 2px pink solid;
margin-left: 20%;
margin-top: 10%;
position: relative;
color: #ffffff;
}
.smaller_box {
width: 30%;
height: 30%;
position: absolute;
top: 2%;
background-color: #0000ff;
left: 2%;
font-size: 30px;
display: flex;
align-items: center;
justify-content: center;
}
.smaller_box_two {
width: 30%;
height: 30%;
position: absolute;
top: 2%;
background-color: #0000ff;
left: 35%;
font-size: 30px;
display: flex;
align-items: center;
justify-content: center;
}
.smaller_box_three {
width: 30%;
height: 30%;
position: absolute;
top: 2%;
background-color: #0000ff;
left: 68%;
font-size: 30px;
display: flex;
align-items: center;
justify-content: center;
}
.smaller_box_four {
width: 30%;
height: 30%;
position: absolute;
top: 35%;
background-color: #0000ff;
left: 68%;
font-size: 30px;
display: flex;
align-items: center;
justify-content: center;
}
.smaller_box_five {
width: 30%;
height: 30%;
position: absolute;
top: 68%;
background-color: #0000ff;
left: 68%;
font-size: 30px;
display: flex;
align-items: center;
justify-content: center;
}
.smaller_box_six {
width: 30%;
height: 30%;
position: absolute;
top: 68%;
background-color: #0000ff;
left: 35%;
font-size: 30px;
display: flex;
align-items: center;
justify-content: center;
}
.smaller_box_seven {
width: 30%;
height: 30%;
position: absolute;
top: 68%;
background-color: #0000ff;
left: 2%;
font-size: 30px;
display: flex;
align-items: center;
justify-content: center;
}
.smaller_box_eight {
width: 30%;
height: 30%;
position: absolute;
top: 35%;
background-color: #0000ff;
left: 2%;
font-size: 30px;
display: flex;
align-items: center;
justify-content: center;
}
.smaller_box_nine {
width: 30%;
height: 30%;
position: absolute;
top: 35%;
background-color: #ff00ff;
left: 35%;
font-size: 30px;
display: flex;
align-items: center;
justify-content: center;
}
最后就是实现JS的功能咯:
创建全局变量 time 初始为 300 ,
获取奖品列表,创建函数,在函数内判断 a 是否小于 7 (奖品的数量 - 1)
如果小于7,执行 k++ 让上一个奖品也就是 k - 1 下标对应的奖品颜色再回归为蓝色
让当前选中的奖品也就是 k 下标对应的奖品背景颜色为红色
如果不小于7,表示 k 不能再自增了,需要重新初始为 0 ,
让最后一件奖品 (奖品的数量 - 1 的下标对应的奖品)的背景颜色为蓝色,
let biggestBox = document.getElementsByClassName('biggest_box')[0];
let but = document.getElementsByClassName('smaller_box_nine')[0];
let arr = biggestBox.getElementsByTagName('div');
// let smaller_box_nine = document.getElementsByClassName('smaller_box_nine')[0];
// console.log(arr);
let b;
let a = 0;
let num = 0; //圈数
let time = 300;
let randNum = 0;
but.onclick = on;
function on() {
// for (let i = 0; i < arr.length; i++) {
// arr[i].style.backgroundColor = '#0000ff';
// }
but.onclick = null;
randNum = Math.floor(Math.random() * 8); //随机整数
arr[a].style.backgroundColor = '#ff0000';
b = setInterval(fn, time);
}
function fn() {
if (a < arr.length - 1) {
a++;
arr[a - 1].style.backgroundColor = '#0000ff';
} else {
a = 0;
num++;
arr[arr.length - 1].style.backgroundColor = '#0000ff';
}
arr[a].style.backgroundColor = '#ff0000';
if (num <= 2) {
if (time <= 100) {
time = 100;
} else {
time -= 20;
}
} else {
if (time >= 300) {
time = 300;
} else {
time += 20;
}
}
// console.log(num);
if (num > 6 && a == randNum) {
clearInterval(b);
num = 0;
time = 100;
randNum = 0;
setTimeout(function() {
alert('哟,运气可以啊')
but.onclick = on;
});
} else {
clearInterval(b);
b = setInterval(fn, time);
}
}