当前位置:首页 > 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动画和JavaScript逻辑。大转盘通常包含一个可旋转的圆盘和多个奖项区域,通过触发旋转动画并最终停在某个奖项上完成抽奖过程。 HTML结构…

vue2简易实现

vue2简易实现

Vue2 简易实现 Vue2 是一个渐进式 JavaScript 框架,用于构建用户界面。以下是一个简易的 Vue2 实现示例,涵盖核心功能如数据绑定、指令和组件化。 安装 Vue2 通过 CDN…

js实现大转盘

js实现大转盘

实现大转盘的基本思路 使用HTML、CSS和JavaScript创建一个可视化的大转盘效果。核心是通过CSS实现转盘样式,JavaScript控制旋转动画和结果判定。 HTML结构 <div…

uniapp 简易框架

uniapp 简易框架

uniapp 简易框架搭建方法 环境准备 安装 HBuilderX 作为开发工具,确保已配置 Node.js 环境。通过 HBuilderX 创建 uni-app 项目时选择默认模板或自定义模板。…

简易实现vue

简易实现vue

简易 Vue 实现核心思路 创建一个极简的 Vue 实现需要理解其核心机制:数据响应式、模板编译和虚拟 DOM。以下是一个简化版实现框架,仅包含核心功能。 数据响应式系统 通过 Object.def…

实现简易vue

实现简易vue

实现简易 Vue 的核心思路 简易 Vue 的实现主要围绕数据响应式、模板编译和依赖收集展开。以下是一个简化版 Vue 的实现框架: 数据响应式系统 通过 Object.defineProperty…