当前位置:首页 > JavaScript

js实现头像抽奖

2026-04-07 10:40:28JavaScript

实现头像抽奖功能

使用JavaScript实现头像抽奖功能,可以通过随机选择数组中的元素来实现。以下是一个完整的实现方案:

// 准备头像数据数组
const avatars = [
  { id: 1, name: '用户1', avatar: 'avatar1.jpg' },
  { id: 2, name: '用户2', avatar: 'avatar2.jpg' },
  { id: 3, name: '用户3', avatar: 'avatar3.jpg' },
  { id: 4, name: '用户4', avatar: 'avatar4.jpg' },
  { id: 5, name: '用户5', avatar: 'avatar5.jpg' }
];

// 获取DOM元素
const startBtn = document.getElementById('startBtn');
const stopBtn = document.getElementById('stopBtn');
const resultDiv = document.getElementById('result');
const avatarImg = document.getElementById('avatarImg');
const userName = document.getElementById('userName');

let timer = null;
let currentIndex = 0;

// 开始抽奖
startBtn.addEventListener('click', () => {
  clearInterval(timer);
  timer = setInterval(() => {
    currentIndex = Math.floor(Math.random() * avatars.length);
    displayAvatar(currentIndex);
  }, 100);
});

// 停止抽奖
stopBtn.addEventListener('click', () => {
  clearInterval(timer);
  announceWinner(currentIndex);
});

// 显示当前头像
function displayAvatar(index) {
  avatarImg.src = avatars[index].avatar;
  userName.textContent = avatars[index].name;
}

// 宣布获奖者
function announceWinner(index) {
  resultDiv.textContent = `恭喜 ${avatars[index].name} 获奖!`;
  displayAvatar(index);
}

HTML结构示例

<div class="lottery-container">
  <img id="avatarImg" src="default.jpg" alt="抽奖头像">
  <p id="userName">等待抽奖...</p>
  <div id="result"></div>
  <button id="startBtn">开始抽奖</button>
  <button id="stopBtn">停止抽奖</button>
</div>

CSS样式建议

.lottery-container {
  text-align: center;
  margin: 20px auto;
  max-width: 400px;
}

#avatarImg {
  width: 150px;
  height: 150px;
  border-radius: 50%;
  object-fit: cover;
  margin-bottom: 10px;
}

button {
  padding: 8px 16px;
  margin: 0 5px;
  cursor: pointer;
}

功能扩展建议

增加音效增强用户体验

const startSound = new Audio('start.mp3');
const stopSound = new Audio('stop.mp3');

startBtn.addEventListener('click', () => {
  startSound.play();
  // 原有代码
});

stopBtn.addEventListener('click', () => {
  stopSound.play();
  // 原有代码
});

添加抽奖动画效果

function displayAvatar(index) {
  avatarImg.classList.add('blink');
  setTimeout(() => {
    avatarImg.src = avatars[index].avatar;
    userName.textContent = avatars[index].name;
    avatarImg.classList.remove('blink');
  }, 200);
}

对应的CSS动画

js实现头像抽奖

@keyframes blink {
  0% { opacity: 0.5; }
  50% { opacity: 1; }
  100% { opacity: 0.5; }
}

.blink {
  animation: blink 0.2s;
}

注意事项

确保头像图片路径正确 抽奖按钮应防止重复点击 移动端需要调整样式适应不同屏幕 考虑添加参与抽奖的人数限制功能 可以增加奖品信息显示功能

标签: 头像js
分享给朋友:

相关文章

js实现复制

js实现复制

使用document.execCommand方法 在较旧的浏览器中,可以使用document.execCommand('copy')实现复制功能。创建一个临时的textarea或input元素,将需要…

js实现瀑布流

js实现瀑布流

实现瀑布流布局 瀑布流布局是一种常见的网页布局方式,常用于图片展示、商品列表等场景。以下是使用 JavaScript 实现瀑布流布局的几种方法。 纯 JavaScript 实现 通过计算元素的位置和…

js实现dh

js实现dh

JavaScript 实现 DH(Diffie-Hellman)密钥交换 Diffie-Hellman(DH)密钥交换是一种安全协议,允许双方在不安全的通信信道上建立一个共享密钥。以下是如何在 Jav…

js实现驼峰

js实现驼峰

实现驼峰命名的几种方法 使用正则表达式和字符串替换 通过正则表达式匹配字符串中的特定模式(如下划线或短横线),并将其后的字母转换为大写,同时移除分隔符。 function toCamelCase(s…

js实现正交

js实现正交

正交的概念 正交在数学和计算机科学中通常指两个向量垂直或线性无关。在编程中,正交性常被用于设计模块化、低耦合的系统。 向量正交判断 判断两个向量是否正交可以通过点积是否为0来实现: functio…

js实现的游戏

js实现的游戏

JavaScript 游戏开发基础 JavaScript 是开发网页游戏的流行选择,因其无需插件即可在浏览器中运行。以下是一些关键技术和资源: HTML5 Canvas Canvas 提供了绘制图形…