帮我用HTML实现一个1到400随机抽取号数的网页抽奖器,有开始抽奖和重置的按钮,每次抽取一个号数,需要有抽取动画,抽取号数不重复,有已经抽取过的数字显示区,有美观的界面
时间: 2023-08-08 19:07:14 浏览: 107
好的,以下是一个简单的实现,具体样式可以根据自己的需要进行修改。在这个实现中,我使用JavaScript的数组和循环来实现随机抽取号数、判重等功能,使用CSS3的动画来实现抽奖动画效果。
```html
<!DOCTYPE html>
<html>
<head>
<title>HTML抽奖器</title>
<style type="text/css">
.container {
width: 600px;
margin: 0 auto;
text-align: center;
}
h1 {
font-size: 36px;
color: #333;
margin-top: 50px;
margin-bottom: 50px;
}
.number {
display: inline-block;
font-size: 80px;
font-weight: bold;
color: #fff;
background-color: #f00;
border-radius: 50%;
width: 200px;
height: 200px;
line-height: 200px;
vertical-align: middle;
margin: 50px;
animation: shake 0.5s linear infinite;
}
.button {
display: inline-block;
background-color: #333;
color: #fff;
padding: 10px 20px;
border-radius: 5px;
margin: 20px;
cursor: pointer;
}
.button:hover {
background-color: #666;
}
.result {
margin-top: 50px;
font-size: 24px;
color: #333;
text-align: left;
width: 400px;
margin-left: auto;
margin-right: auto;
padding: 20px;
border: 1px solid #333;
border-radius: 5px;
}
@keyframes shake {
0% {transform: rotate(0deg);}
20% {transform: rotate(-10deg);}
40% {transform: rotate(10deg);}
60% {transform: rotate(-10deg);}
80% {transform: rotate(10deg);}
100% {transform: rotate(0deg);}
}
</style>
</head>
<body>
<div class="container">
<h1>HTML抽奖器</h1>
<div class="number">1</div>
<div>
<button class="button" id="start">开始抽奖</button>
<button class="button" id="reset">重置</button>
</div>
<div class="result">
已抽取的号码:<span id="resultList"></span>
</div>
</div>
<script type="text/javascript">
var numbers = [];
var resultList = [];
// 初始化号码池
for (var i = 1; i <= 400; i++) {
numbers.push(i);
}
// 随机抽取号码
function drawNumber() {
if (numbers.length > 0) {
var index = Math.floor(Math.random() * numbers.length);
var number = numbers[index];
numbers.splice(index, 1);
resultList.push(number);
return number;
}
return null;
}
// 显示已经抽取过的号码
function showResultList() {
var resultListElement = document.getElementById("resultList");
resultListElement.innerHTML = "";
for (var i = 0; i < resultList.length; i++) {
resultListElement.innerHTML += resultList[i] + " ";
}
}
window.onload = function() {
var numberElement = document.querySelector(".number");
var startButton = document.getElementById("start");
var resetButton = document.getElementById("reset");
// 开始抽奖
startButton.onclick = function() {
var number = drawNumber();
if (number != null) {
numberElement.innerHTML = number;
numberElement.classList.add("animated");
setTimeout(function() {
numberElement.classList.remove("animated");
}, 500);
showResultList();
}
};
// 重置
resetButton.onclick = function() {
numbers = [];
resultList = [];
numberElement.innerHTML = 1;
showResultList();
// 重新初始化号码池
for (var i = 1; i <= 400; i++) {
numbers.push(i);
}
};
};
</script>
</body>
</html>
```
这个实现中,我们使用了CSS3的动画来实现抽奖动画效果。具体来说,我们定义了一个名为“shake”的动画,它会使一个元素在0.5秒内旋转一定角度,然后在不断重复这个过程。在抽奖时,我们给显示号码的元素添加这个动画,使它在显示号码的同时产生一个抖动的效果。
同时,我们使用了JavaScript来完成抽奖的逻辑。在初始化时,我们将号码1到400放入一个数组中,然后每次抽奖时随机从数组中取出一个号码,并从数组中删除这个号码,保证不会重复抽取。抽取过的号码会保存在另一个数组中,并在抽取后显示在页面上。
最后,在页面上我们为“开始抽奖”和“重置”按钮添加了点击事件,分别用来开始抽奖和重置抽奖器。
阅读全文