用html+css+js做一个转盘抽奖
时间: 2023-10-12 21:24:21 浏览: 127
javascript+HTML5 Canvas绘制转盘抽奖
好的,以下是一个简单的转盘抽奖的实现:
HTML 部分:
```html
<div class="container">
<div class="roulette">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
<div class="item">6</div>
<div class="item">7</div>
<div class="item">8</div>
</div>
<button class="btn" onclick="spin()">抽奖</button>
</div>
```
CSS 部分:
```css
.container {
width: 400px;
margin: 0 auto;
text-align: center;
}
.roulette {
margin: 50px auto;
position: relative;
width: 300px;
height: 300px;
border-radius: 50%;
overflow: hidden;
transform: rotate(0deg);
transition: transform 6s ease-out;
}
.item {
position: absolute;
width: 100%;
height: 100%;
text-align: center;
line-height: 300px;
font-size: 36px;
font-weight: bold;
}
.item:nth-child(1) {
background-color: #f44336;
transform: rotate(0deg);
}
.item:nth-child(2) {
background-color: #ffeb3b;
transform: rotate(45deg);
}
.item:nth-child(3) {
background-color: #4caf50;
transform: rotate(90deg);
}
.item:nth-child(4) {
background-color: #2196f3;
transform: rotate(135deg);
}
.item:nth-child(5) {
background-color: #9c27b0;
transform: rotate(180deg);
}
.item:nth-child(6) {
background-color: #ff9800;
transform: rotate(225deg);
}
.item:nth-child(7) {
background-color: #795548;
transform: rotate(270deg);
}
.item:nth-child(8) {
background-color: #00bcd4;
transform: rotate(315deg);
}
.btn {
margin-top: 30px;
padding: 10px 20px;
color: #fff;
background-color: #2196f3;
border: none;
border-radius: 5px;
font-size: 18px;
cursor: pointer;
}
```
JavaScript 部分:
```javascript
const roulette = document.querySelector('.roulette');
const btn = document.querySelector('.btn');
let deg = 0;
let speed = 0;
function spin() {
// 生成随机速度
speed = Math.floor(Math.random() * (100 - 50 + 1) + 50);
// 计算旋转角度
deg += 360 / 8 + (360 / 8) * Math.floor(Math.random() * 3);
// 转动转盘
roulette.style.transform = `rotate(${deg}deg)`;
// 停止转动
setTimeout(() => {
// 计算中奖项
const winningNum = Math.floor((360 - (deg % 360)) / (360 / 8)) + 1;
// 弹出中奖提示
alert(`恭喜您获得第 ${winningNum} 项奖品!`);
// 重置转盘角度
roulette.style.transform = 'rotate(0deg)';
}, speed * 6);
}
btn.addEventListener('click', spin);
```
以上代码实现了一个简单的转盘抽奖,点击“抽奖”按钮后,转盘会根据随机速度旋转一段时间,然后停止在一个随机的位置,弹出中奖提示。注意,这只是一个简单的示例,实际应用中还需要考虑更多因素,例如转盘的样式、中奖概率、奖品设置等等。
阅读全文