当前位置:首页 > JavaScript

js实现图片抽奖

2026-02-03 01:37:37JavaScript

实现图片抽奖功能

图片抽奖功能可以通过随机选择图片并展示动画效果来实现。以下是一个完整的实现方案:

HTML结构

创建一个包含图片容器和抽奖按钮的简单HTML结构:

js实现图片抽奖

<div id="lottery-container">
  <img id="result-image" src="placeholder.jpg" alt="抽奖结果">
</div>
<button id="start-lottery">开始抽奖</button>

CSS样式

为抽奖效果添加基本样式:

js实现图片抽奖

#lottery-container {
  width: 300px;
  height: 300px;
  margin: 20px auto;
  border: 2px solid #ccc;
}

#result-image {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

#start-lottery {
  display: block;
  margin: 0 auto;
  padding: 10px 20px;
  background-color: #ff4757;
  color: white;
  border: none;
  border-radius: 5px;
  cursor: pointer;
}

JavaScript实现

核心抽奖逻辑代码:

// 图片数组
const prizeImages = [
  'image1.jpg',
  'image2.jpg',
  'image3.jpg',
  'image4.jpg',
  'image5.jpg'
];

// 获取DOM元素
const resultImage = document.getElementById('result-image');
const startButton = document.getElementById('start-lottery');

// 抽奖状态
let isLotteryRunning = false;
let animationInterval;

// 随机切换图片函数
function switchRandomImage() {
  const randomIndex = Math.floor(Math.random() * prizeImages.length);
  resultImage.src = prizeImages[randomIndex];
}

// 开始抽奖
function startLottery() {
  if (isLotteryRunning) return;

  isLotteryRunning = true;
  startButton.disabled = true;

  // 快速切换图片
  animationInterval = setInterval(switchRandomImage, 100);

  // 3秒后停止抽奖
  setTimeout(stopLottery, 3000);
}

// 停止抽奖
function stopLottery() {
  clearInterval(animationInterval);
  isLotteryRunning = false;
  startButton.disabled = false;

  // 最终结果
  const finalIndex = Math.floor(Math.random() * prizeImages.length);
  resultImage.src = prizeImages[finalIndex];

  alert(`恭喜获得奖品 ${finalIndex + 1}!`);
}

// 绑定事件
startButton.addEventListener('click', startLottery);

高级功能扩展

可以添加更多效果增强用户体验:

// 添加缓动动画效果
function stopLottery() {
  clearInterval(animationInterval);

  // 减速效果
  let delay = 100;
  const slowDownInterval = setInterval(() => {
    switchRandomImage();
    delay += 50;

    if (delay > 500) {
      clearInterval(slowDownInterval);
      finalizeResult();
    }
  }, delay);
}

function finalizeResult() {
  isLotteryRunning = false;
  startButton.disabled = false;

  const finalIndex = Math.floor(Math.random() * prizeImages.length);
  resultImage.src = prizeImages[finalIndex];

  // 使用动画显示结果
  resultImage.style.transform = 'scale(1.2)';
  setTimeout(() => {
    resultImage.style.transform = 'scale(1)';
  }, 300);

  alert(`恭喜获得奖品 ${finalIndex + 1}!`);
}

注意事项

  1. 确保所有图片路径正确且可访问
  2. 可以根据需要调整抽奖持续时间
  3. 移动端适配可能需要调整样式
  4. 考虑添加加载状态避免图片未加载完成时显示问题

这个实现提供了基本的图片抽奖功能,可以根据具体需求进一步扩展和定制。

标签: 图片js
分享给朋友:

相关文章

js 实现vue模板

js 实现vue模板

实现 Vue 模板的 JavaScript 方法 通过原生 JavaScript 可以实现类似 Vue 的模板渲染功能,主要包括数据绑定、指令处理和模板解析。以下是核心实现思路: 数据绑定与…

js实现倒计时

js实现倒计时

使用 setInterval 实现倒计时 通过 setInterval 定时器每秒更新剩余时间,适用于简单倒计时场景。 function countdown(seconds, callback) {…

vue实现图片查看

vue实现图片查看

实现图片查看功能 在Vue中实现图片查看功能可以通过多种方式完成,常见的有使用原生HTML5的<dialog>元素、第三方组件库(如Element UI、Vant等)或专用插件(如view…

js实现防洪

js实现防洪

防抖(Debounce)实现 防抖的核心思想是在事件触发后延迟执行回调函数,若在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口调整等场景。 function debounce(func,…

js实现目录

js实现目录

实现目录的基本思路 在JavaScript中实现目录功能通常涉及以下几个核心步骤:解析文档中的标题元素(如h1-h6),动态生成目录结构,并添加交互逻辑(如点击跳转)。以下是具体实现方法: 解析标题…

vue实现js休眠

vue实现js休眠

实现 JavaScript 休眠的方法 在 Vue 中实现 JavaScript 休眠(延迟执行)可以通过以下方式实现。由于 JavaScript 本身没有内置的 sleep 函数,通常使用 Prom…