<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>仿淘宝彩票换一注动画特效</title>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: "Microsoft YaHei", sans-serif;
background-color: #f5f5f5;
padding: 20px;
}
.lottery-container {
width: 100%;
max-width: 500px;
margin: 0 auto;
background-color: #fff;
border-radius: 10px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
padding: 20px;
}
.title {
text-align: center;
color: #ff4e00;
margin-bottom: 20px;
font-size: 24px;
}
.ball-area {
display: flex;
justify-content: center;
margin-bottom: 30px;
}
.ball {
width: 40px;
height: 40px;
border-radius: 50%;
background-color: #ff4e00;
color: white;
display: flex;
align-items: center;
justify-content: center;
margin: 0 5px;
font-weight: bold;
font-size: 18px;
position: relative;
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);
}
.ball.blue {
background-color: #1e90ff;
}
.btn-area {
display: flex;
justify-content: center;
}
.btn {
padding: 10px 25px;
background-color: #ff4e00;
color: white;
border: none;
border-radius: 5px;
font-size: 16px;
cursor: pointer;
transition: all 0.3s;
}
.btn:hover {
background-color: #ff6a00;
transform: translateY(-2px);
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
}
.btn:active {
transform: translateY(0);
}
@keyframes shake {
0%, 100% { transform: translateY(0); }
25% { transform: translateY(-10px); }
50% { transform: translateY(0); }
75% { transform: translateY(-5px); }
}
.shake {
animation: shake 0.5s ease-in-out;
}
@keyframes fadeIn {
from { opacity: 0; transform: scale(0.8); }
to { opacity: 1; transform: scale(1); }
}
.fade-in {
animation: fadeIn 0.3s ease-out;
}
</style>
</head>
<body>
<div class="lottery-container">
<h1 class="title">双色球随机选号</h1>
<div class="ball-area">
<div class="ball">01</div>
<div class="ball">02</div>
<div class="ball">03</div>
<div class="ball">04</div>
<div class="ball">05</div>
<div class="ball">06</div>
<div class="ball blue">07</div>
</div>
<div class="btn-area">
<button id="changeBtn" class="btn">换一注</button>
</div>
</div>
<!-- 参考文章:https://weibo.com/ttarticle/p/show?id=2309405181805807665206 -->
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>
$(document).ready(function() {
// 生成随机数函数
function getRandomNum(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
// 生成不重复的随机数数组
function generateUniqueNumbers(count, min, max) {
const numbers = [];
while (numbers.length < count) {
const num = getRandomNum(min, max);
if (!numbers.includes(num)) {
numbers.push(num);
}
}
return numbers.sort((a, b) => a - b);
}
// 格式化数字,补零
function formatNumber(num) {
return num < 10 ? '0' + num : num.toString();
}
// 换一注函数
function changeNumbers() {
const redBalls = $('.ball:not(.blue)');
const blueBall = $('.ball.blue');
// 添加抖动动画
redBalls.addClass('shake');
blueBall.addClass('shake');
// 动画结束后执行
setTimeout(function() {
// 移除动画类
redBalls.removeClass('shake fade-in');
blueBall.removeClass('shake fade-in');
// 生成新的红球号码 (1-33选6个不重复)
const newRedNumbers = generateUniqueNumbers(6, 1, 33);
// 生成新的蓝球号码 (1-16)
const newBlueNumber = getRandomNum(1, 16);
// 更新红球
redBalls.each(function(index) {
$(this).text(formatNumber(newRedNumbers[index]));
});
// 更新蓝球
blueBall.text(formatNumber(newBlueNumber));
// 添加淡入动画
redBalls.addClass('fade-in');
blueBall.addClass('fade-in');
}, 500);
}
// 按钮点击事件
$('#changeBtn').click(function() {
changeNumbers();
});
// 初始生成一组号码
changeNumbers();
});
</script>
</body>
</html>

被折叠的 条评论
为什么被折叠?



