使用 JavaScript 中的 window 对象实现一个抽奖程序 1、基本要求:点击“开始”按钮,转盘旋转。点击“结束”按钮,转盘停止。 2、拓展要求:在转盘停止4s后,用弹窗提示中奖结果。
时间: 2024-10-12 07:15:30 浏览: 22
在JavaScript中,我们可以利用`window`对象和HTML5的一些API(如`requestAnimationFrame`)创建一个简单的抽奖转盘程序。以下是一个简化的示例:
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<style>
.turning-disc {
width: 200px;
height: 200px;
border-radius: 50%;
position: relative;
background-color: #ccc;
display: flex;
justify-content: center;
align-items: center;
cursor: pointer;
}
.slice {
position: absolute;
width: 100%;
height: 100%;
background-color: red;
opacity: 0;
transform-origin: bottom center;
transition: transform 0.5s ease;
}
</style>
</head>
<body>
<div class="turning-disc" id="disc">
<div class="slice" id="slice1"></div>
<div class="slice" id="slice2"></div>
<!-- 添加更多slice以对应更多奖项 -->
</div>
<button onclick="startSpin()">开始</button>
<button onclick="endSpin()">结束</button>
<script>
let slices = Array.from(document.querySelectorAll('.slice'));
let isSpinning = false;
function startSpin() {
if (!isSpinning) {
isSpinning = true;
const disc = document.getElementById('disc');
const sliceIndex = Math.floor(Math.random() * slices.length);
rotateSlice(sliceIndex);
// 每次旋转后延迟一段时间,模拟转盘旋转
setTimeout(() => {
requestAnimationFrame(startSpin);
}, 500);
}
}
function endSpin() {
isSpinning = false;
}
function rotateSlice(index) {
slices.forEach((slice, i) => {
slice.style.transform = `rotate(${(i === index ? '90deg' : '-90deg')} ${index === index ? '2s linear' : '0s'});
});
}
// 拓展要求:延时提示结果
setTimeout(() => {
if (Math.random() < 0.2) { // 模拟20%的概率中奖
alert(`恭喜您,您获得了大奖!`);
} else {
alert('谢谢参与,下次好运!');
}
}, 4000);
</script>
</body>
</html>
```
这个示例首先创建了一个轮盘转盘,由几个切片组成。当用户点击“开始”按钮时,会随机选择一个切片并使其旋转,同时通过定时器和`requestAnimationFrame`来模拟转盘动画。点击“结束”按钮后,停止动画。最后,在转盘静止4秒后,会随机弹出中奖信息。
阅读全文