当前位置:首页 > JavaScript

JS实现简易转盘抽奖

2026-04-04 18:00:13JavaScript

JS实现简易转盘抽奖

实现思路

使用HTML+CSS构建转盘界面,通过JavaScript控制旋转动画和抽奖逻辑。核心是计算旋转角度和动画时间,模拟物理减速效果。

JS实现简易转盘抽奖

HTML结构

<div class="wheel-container">
  <div class="wheel"></div>
  <button class="spin-btn">开始抽奖</button>
</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%,
    blue 25% 50%,
    green 50% 75%,
    yellow 75% 100%
  );
  transition: transform 4s cubic-bezier(0.17, 0.67, 0.12, 0.99);
}

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

JavaScript逻辑

const wheel = document.querySelector('.wheel');
const spinBtn = document.querySelector('.spin-btn');
let canSpin = true;

// 奖项配置
const prizes = ['一等奖', '二等奖', '三等奖', '谢谢参与'];
const prizeAngles = [0, 90, 180, 270]; // 各奖项对应的角度

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

  canSpin = false;
  const randomIndex = Math.floor(Math.random() * prizes.length);
  const targetAngle = 360 * 5 + prizeAngles[randomIndex]; // 旋转5圈后停在目标位置

  wheel.style.transform = `rotate(${-targetAngle}deg)`;

  setTimeout(() => {
    alert(`恭喜获得: ${prizes[randomIndex]}`);
    canSpin = true;
  }, 4000);
});

优化方向

  1. 添加指针元素指向中奖区域
  2. 实现更真实的减速动画效果
  3. 增加音效增强体验
  4. 支持动态配置奖项数量和颜色
  5. 添加旋转过程中的状态提示

物理减速实现

使用CSS的cubic-bezier缓动函数模拟物理减速效果:

transition: transform 4s cubic-bezier(0.17, 0.67, 0.12, 0.99);

兼容性提示

现代浏览器都支持上述技术,如需兼容旧版IE,需考虑使用jQuery动画替代CSS过渡。

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

相关文章

vue实现抽奖转盘实现思路

vue实现抽奖转盘实现思路

Vue 抽奖转盘实现思路 核心逻辑 通过 CSS 旋转动画和 Vue 的数据绑定实现转盘动态效果,结合随机数生成中奖结果。 实现步骤 数据准备 定义奖品列表和转盘扇区角度: data() {…

vue实现转盘抽奖

vue实现转盘抽奖

实现思路 Vue实现转盘抽奖的核心是通过CSS动画控制转盘旋转,结合Vue的数据绑定和计算属性动态控制旋转角度和结果判定。关键点包括转盘布局、动画触发、结果计算和回调处理。 转盘布局设计 使用CSS…

vue怎么实现转盘

vue怎么实现转盘

Vue 实现转盘功能 使用 CSS 动画和 Vue 数据绑定 创建一个转盘组件,使用 CSS 的 transform 和 transition 属性实现旋转效果。Vue 负责管理旋转角度和触发动画。…

vue实现大转盘

vue实现大转盘

实现大转盘的基本思路 使用Vue实现大转盘需要结合CSS动画和JavaScript逻辑。大转盘通常包含一个可旋转的圆盘和多个奖项区域,通过触发旋转动画并最终停在某个奖项上完成抽奖过程。 HTML结构…

使用vue实现简易网页

使用vue实现简易网页

使用 Vue 实现简易网页 创建 Vue 项目 使用 Vue CLI 快速初始化项目,确保已安装 Node.js 和 npm。 运行以下命令创建项目: npm install -g @vue/c…

实现简易react

实现简易react

实现简易 React 的核心要素 要实现一个简易 React,需要模拟其核心功能:虚拟 DOM、组件化、状态管理和渲染机制。以下是关键步骤和代码示例。 虚拟 DOM 结构 虚拟 DOM 是真实 DO…