目录
以下是一个动态的抽奖系统示例,允许用户动态添加参与者,并可以随机抽取中奖者。参与者列表动态更新,使用简单直观的交互界面
实时动画:在抽奖过程中增加滚动效果,模仿转盘随机抽取的体验。
清除功能:允许用户清空参与者列表或移除特定参与者。
多轮抽奖:支持多次抽奖,并记录每轮的中奖结果。
界面展示
1、添加参与者
2、进行动态抽奖
3、清空
-
滚动动画:
- 点击“开始抽奖”后会滚动显示随机选中的名字,增加互动性。
-
清空列表:
- 提供“清空”按钮,允许用户清空当前的参与者列表。
-
结果区域优化:
- 抽奖结果显示更加动态,未中奖时显示“等待抽奖结果...”。
-
限制滚动时间:
- 滚动动画持续 3 秒后自动停止并宣布结果。
使用方法:
- 将代码保存为
.html
文件并在浏览器中打开。 - 动态添加参与者。
- 点击“开始抽奖”,体验滚动效果和随机抽奖功能。
完整代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>高级动态抽奖系统</title>
<style>
body {
font-family: Arial, sans-serif;
background-color: #f0f4f8;
margin: 0;
padding: 0;
display: flex;
align-items: center;
justify-content: center;
height: 100vh;
}
.container {
background-color: white;
border-radius: 10px;
padding: 20px;
box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1);
text-align: center;
width: 400px;
}
h1 {
font-size: 24px;
color: #333;
margin-bottom: 20px;
}
.input-area, .controls {
margin-bottom: 20px;
}
input, button {
padding: 10px;
border: none;
border-radius: 5px;
font-size: 16px;
}
button {
background-color: #007BFF;
color: white;
cursor: pointer;
}
button:hover {
background-color: #0056b3;
}
.participants {
text-align: left;
margin-top: 20px;
}
.participants ul {
list-style: none;
padding: 0;
max-height: 200px;
overflow-y: auto;
border: 1px solid #ddd;
border-radius: 5px;
padding: 10px;
}
.participants li {
margin: 5px 0;
padding: 5px;
background-color: #f7f7f7;
border-radius: 3px;
}
.result {
font-size: 18px;
color: #28a745;
margin-top: 20px;
height: 40px;
line-height: 40px;
}
.result span {
font-weight: bold;
}
</style>
</head>
<body>
<div class="container">
<h1>高级动态抽奖系统</h1>
<div class="input-area">
<input type="text" id="participant" placeholder="输入参与者名字">
<button onclick="addParticipant()">添加</button>
<button onclick="clearParticipants()" style="background-color: #dc3545; margin-left: 10px;">清空</button>
</div>
<div class="controls">
<button onclick="startLottery()">开始抽奖</button>
</div>
<div class="result" id="result">等待抽奖结果...</div>
<div class="participants">
<strong>参与者列表:</strong>
<ul id="participantsList"></ul>
</div>
</div>
<script>
const participants = []; // 存储参与者列表
let rollingInterval;
// 添加参与者
function addParticipant() {
const input = document.getElementById('participant');
const name = input.value.trim();
if (name) {
participants.push(name);
updateParticipantsList();
input.value = '';
} else {
alert('请输入有效的名字!');
}
}
// 清空参与者
function clearParticipants() {
participants.length = 0;
updateParticipantsList();
document.getElementById('result').textContent = "等待抽奖结果...";
}
// 更新参与者列表
function updateParticipantsList() {
const list = document.getElementById('participantsList');
list.innerHTML = '';
participants.forEach((name, index) => {
const li = document.createElement('li');
li.textContent = `${index + 1}. ${name}`;
list.appendChild(li);
});
}
// 开始抽奖
function startLottery() {
const result = document.getElementById('result');
if (participants.length === 0) {
alert('请先添加参与者!');
return;
}
// 动态滚动效果
let currentIndex = 0;
result.textContent = '抽奖中...';
rollingInterval = setInterval(() => {
result.textContent = `当前选中: ${participants[currentIndex]}`;
currentIndex = (currentIndex + 1) % participants.length;
}, 100);
// 停止滚动并选出赢家
setTimeout(() => {
clearInterval(rollingInterval);
const winnerIndex = Math.floor(Math.random() * participants.length);
result.innerHTML = `恭喜 <span>${participants[winnerIndex]}</span> 中奖!`;
}, 3000); // 3秒后停止
}
</script>
</body>
</html>
此版本页面更加动态,用户体验更好,并增加了互动性和操作性。
嗨,我是命运之光。如果你觉得我的分享有价值,不妨通过以下方式表达你的支持:👍 点赞来表达你的喜爱,📁 关注以获取我的最新消息,💬 评论与我交流你的见解。我会继续努力,为你带来更多精彩和实用的内容。
点击这里👉 ,获取最新动态,⚡️ 让信息传递更加迅速。