当前位置:首页 > JavaScript

JS实现简易转盘抽奖

2026-03-01 17:09:36JavaScript

JS实现简易转盘抽奖

JS实现简易转盘抽奖

实现思路

使用HTML、CSS和JavaScript创建一个简易转盘抽奖功能。核心逻辑是通过CSS旋转动画模拟转盘效果,JavaScript控制旋转时间和结果判定。

HTML结构

<div class="wheel-container">
  <div class="wheel"></div>
  <button id="spin-btn">开始抽奖</button>
  <div class="pointer"></div>
</div>

CSS样式

.wheel-container {
  position: relative;
  width: 300px;
  height: 300px;
  margin: 0 auto;
}

.wheel {
  width: 100%;
  height: 100%;
  border-radius: 50%;
  background: conic-gradient(
    red 0% 25%,
    green 25% 50%,
    blue 50% 75%,
    yellow 75% 100%
  );
  transition: transform 4s cubic-bezier(0.17, 0.67, 0.12, 0.99);
  transform: rotate(0deg);
}

.pointer {
  position: absolute;
  top: -20px;
  left: 50%;
  transform: translateX(-50%);
  width: 0;
  height: 0;
  border-left: 15px solid transparent;
  border-right: 15px solid transparent;
  border-top: 30px solid #333;
}

#spin-btn {
  display: block;
  margin: 20px auto;
  padding: 10px 20px;
  background: #333;
  color: white;
  border: none;
  border-radius: 5px;
  cursor: pointer;
}

JavaScript逻辑

const wheel = document.querySelector('.wheel');
const spinBtn = document.getElementById('spin-btn');
const segments = 4; // 对应CSS中的颜色分段
let isSpinning = false;

spinBtn.addEventListener('click', () => {
  if (isSpinning) return;

  isSpinning = true;
  const randomRotation = 360 * 5 + Math.floor(Math.random() * 360);
  wheel.style.transform = `rotate(${randomRotation}deg)`;

  setTimeout(() => {
    isSpinning = false;
    const actualRotation = randomRotation % 360;
    const segmentAngle = 360 / segments;
    const winningSegment = Math.floor(actualRotation / segmentAngle);

    const colors = ['red', 'green', 'blue', 'yellow'];
    alert(`恭喜获得: ${colors[winningSegment]}区域奖品`);
  }, 4000);
});

功能扩展建议

  1. 奖品配置化:将奖品信息存储在数组中,便于修改和管理
  2. 动画优化:添加开始和结束的缓动效果
  3. 中奖概率控制:为不同区域设置不同的中奖概率
  4. 响应式设计:适应不同屏幕尺寸

注意事项

  1. 确保CSS的transition时间与JavaScript的setTimeout时间一致
  2. 旋转角度计算需要考虑模360运算,以确定最终停止位置
  3. 防抖处理防止用户连续点击
  4. 跨浏览器兼容性测试

标签: 转盘简易
分享给朋友:

相关文章

vue实现简易时钟

vue实现简易时钟

实现简易时钟的步骤 在Vue中实现简易时钟可以通过动态更新当前时间来实现。以下是具体实现方法: 创建Vue组件 新建一个Vue组件文件Clock.vue,包含模板、脚本和样式部分。 <tem…

vue实现简易todolist

vue实现简易todolist

实现简易TodoList的步骤 创建Vue项目 使用Vue CLI或Vite快速初始化一个Vue项目。例如通过Vite创建: npm create vite@latest vue-todolis…

css制作转盘

css制作转盘

使用CSS制作转盘 转盘的基本结构 HTML结构需要包含一个转盘容器和指针元素。以下是一个简单的HTML结构示例: <div class="wheel-container"> <…

php实现转盘

php实现转盘

PHP实现转盘功能 转盘功能常见于抽奖活动,以下是实现转盘抽奖的PHP代码示例: <?php // 奖项配置 $prizes = [ ['id' => 1, 'name' =&g…

js实现转盘抽奖

js实现转盘抽奖

实现思路 使用HTML、CSS和JavaScript创建一个转盘抽奖功能。核心是通过CSS动画实现转盘旋转,JavaScript控制旋转时间和停止位置。 HTML结构 <div class…

js实现抽奖转盘效果

js实现抽奖转盘效果

实现抽奖转盘的基本思路 抽奖转盘的核心是通过CSS旋转动画和JavaScript控制停止逻辑实现。转盘通常由扇形区域组成,每个区域对应不同奖项,旋转后指针指向的扇形即为中奖结果。 HTML结构 基础…