以下是一个简单的大转盘实现的 JavaScript 源码示例,结合了 HTML 和 CSS:
HTML 部分:
<div class="wheel-container">
<div class="wheel">
<div class="segment" style="background-color: red;">奖品 1</div>
<div class="segment" style="background-color: blue;">奖品 2</div>
<div class="segment" style="background-color: green;">奖品 3</div>
<div class="segment" style="background-color: yellow;">奖品 4</div>
<div class="segment" style="background-color: purple;">奖品 5</div>
<div class="segment" style="background-color: orange;">奖品 6</div>
</div>
<button id="spin-button">开始转</button>
</div>
CSS 部分:
.wheel-container {
position: relative;
width: 300px;
height: 300px;
margin: 50px auto;
}
.wheel {
position: relative;
width: 100%;
height: 100%;
border-radius: 50%;
overflow: hidden;
transition: transform 5s ease-out;
}
.segment {
position: absolute;
top: 0;
left: 50%;
width: 50%;
height: 50%;
transform-origin: bottom right;
display: flex;
align-items: center;
justify-content: center;
font-size: 20px;
}
#spin-button {
display: block;
margin: 20px auto;
padding: 10px 20px;
}
JavaScript 部分:
const spinButton = document.getElementById('spin-button');
const wheel = document.querySelector('.wheel');
spinButton.addEventListener('click', () => {
const randomAngle = Math.floor(Math.random() * 360) + 720; // 随机旋转角度,保证至少转两圈
wheel.style.transform = `rotate(${randomAngle}deg)`;
});
这个示例实现了一个基本的大转盘效果,点击“开始转”按钮,大转盘会随机旋转一定角度停止。
它的优势在于实现相对简单,容易理解和修改。可以应用于促销活动、游戏抽奖等场景。
如果遇到转盘转动不流畅的问题,可能是由于浏览器性能不足或者动画效果的设置不够优化。可以尝试减少 DOM 元素的数量、优化样式计算或者使用更高效的动画库来解决。
如果想要更复杂的功能,比如添加动画过渡效果、声音提示、与后端交互确定中奖结果等,还需要进一步扩展代码和引入相关的资源。
领取专属 10元无门槛券
手把手带您无忧上云