<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="style.css">
<title>Document</title>
<style>
/* 容器样式 */
.container {
position: relative; /* 为绝对定位的子元素提供参考 */
width: 350px; /* 宽度 */
height: 350px; /* 高度 */
display: flex;
justify-content: center;
align-items: center;
}
/* 旋转按钮样式 */
.container .spinBtn {
position: absolute; /* 绝对定位 */
width: 80px; /* 按钮宽度 */
height: 80px; /* 按钮高度 */
background: #ff0000; /* 背景色 */
border-radius: 50%; /* 圆形按钮 */
z-index: 10; /* 层级 */
display: flex;
justify-content: center;
align-items: center;
text-transform: uppercase; /* 大写文本 */
font-weight: 400; /* 字体加粗 */
color: #ffffff; /* 字体颜色 */
letter-spacing: 0.1em; /* 字母间距 */
cursor: pointer; /* 鼠标指针样式 */
user-select: none; /* 禁止选中文本 */
bottom: 180px; /* 距离底部 */
left: 26.3%; /* 居中 */
font-size: 24px;
transition: transform 5s ease-in-out;
}
/* 旋转按钮的伪元素 */
.container .spinBtn::before {
content: '';
position: absolute;
top: -28px; /* 上移 */
width: 20px; /* 上面的三角形宽度 */
height: 30px; /* 上面的三角形高度 */
background: #ff0000; /* 背景色 */
clip-path: polygon(50% 0%, 15% 100%, 85% 100%); /* 创建三角形 */
}
/* 转盘样式 */
.container .wheel {
position: absolute;
top: 0;
left: 0;
width: 75%; /* 宽度 */
height: 75%; /* 高度 */
background: #ff0000; /* 背景色 */
border-radius: 50%; /* 圆形 */
overflow: hidden; /* 溢出隐藏 */
box-shadow: 0 0 0 18px #ff0000; /* 阴影效果 */
}
/* 转盘数字 */
.container .wheel .number {
position: absolute;
width: 50%; /* 数字块宽度 */
height: 50%; /* 数字块高度 */
background: var(--clr); /* 背景颜色为自定义属性 */
transform-origin: bottom right; /* 旋转起点 */
transform: rotate(calc(60deg * var(--i))); /* 旋转 */
clip-path: polygon(0 0, 72.5% 0, 99% 99%, 0 72.5%); /* 剪切形状 */
display: flex;
justify-content: center;
align-items: center;
}
/* 数字文本样式 */
.container .wheel .number span {
position: relative;
transform: rotate(-45deg);
font-size: 1em; /* 字体大小 */
font-weight: 400; /* 字体加粗 */
color: #000000; /* 字体颜色 */
}
/* .container .wheel .number span::after {
content: '';
position: absolute;
font-size: 0.75em;
font-weight: 500;
} */
/* 绿灯样式 */
.container .wheel .greem {
position: absolute;
width: 32px;
height: 32px;
border-radius: 50%;
background-color: green;
bottom: 75px;
left: 22%;
}
</style>
</head>
<body>
<div class="container">
<div class="spinBtn">抽奖</div> <!-- 旋转按钮 -->
<div class="wheel">
<!-- 每个数字块 -->
<div class="number" style="--i:1;--clr:#fbcbb4;">
<span>一等奖</span>
<div class="greem"></div>
</div>
<div class="number" style="--i:2;--clr:#fbcbb4;">
<span>二等奖</span>
<div class="greem"></div>
</div>
<div class="number" style="--i:3;--clr:#fbcbb4;">
<span>三等奖</span>
<div class="greem"></div>
</div>
<div class="number" style="--i:4;--clr:#fbcbb4;">
<span>四等奖</span>
<div class="greem"></div>
</div>
<div class="number" style="--i:5;--clr:#fbcbb4;">
<span>五等奖</span>
<div class="greem"></div>
</div>
<div class="number" style="--i:6;--clr:#fbcbb4;">
<span>六等奖</span>
<div class="greem"></div>
</div>
</div>
</div>
<script>
// 获取转盘和旋转按钮
let wheel = document.querySelector('.spinBtn')
let spinBtn = document.querySelector('.spinBtn')
let value = Math.ceil(Math.random() * 3600) // 生成初始旋转角度
// 按钮点击事件
spinBtn.onclick = function() {
spinBtn.style.transform = 'rotate(' + value + "deg)"; // 旋转转盘
value += Math.ceil(Math.random() * 3600) // 增加旋转角度
}
// 绿灯效果
let box = document.querySelector('.greem')
</script>
</body>
</html>
小白 想让这个转盘上的小绿灯盒子怎么设置在点击抽奖按钮时发生闪烁 就是绿色和另外一种颜色中来回闪烁 闪烁20次 每次250毫秒 总共5秒 谢谢
一开始感觉得用js,试着用了css的
animation
属性,用了一点js,做个参考,当然你用纯js也行https://codesandbox.io/p/sandbox/xmvr45