css制作抽奖

使用CSS制作抽奖效果
通过CSS动画和关键帧可以实现简单的抽奖效果,以下是一个常见的实现方法:

基础抽奖动画
.prize-wheel {
width: 300px;
height: 300px;
border-radius: 50%;
position: relative;
overflow: hidden;
transition: transform 3s cubic-bezier(0.17, 0.67, 0.83, 0.67);
}
.prize-section {
position: absolute;
width: 50%;
height: 50%;
transform-origin: 100% 100%;
left: 0;
top: 0;
}
@keyframes spin {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
.spinning {
animation: spin 0.2s linear infinite;
}
.slow-down {
animation: spin 1s linear infinite;
}
.stop {
animation: none;
transform: rotate(1080deg); /* 示例停止位置 */
}
HTML结构示例
<div class="prize-wheel">
<div class="prize-section" style="transform: rotate(0deg); background: #f00;"></div>
<div class="prize-section" style="transform: rotate(60deg); background: #0f0;"></div>
<div class="prize-section" style="transform: rotate(120deg); background: #00f;"></div>
<div class="prize-section" style="transform: rotate(180deg); background: #ff0;"></div>
<div class="prize-section" style="transform: rotate(240deg); background: #f0f;"></div>
<div class="prize-section" style="transform: rotate(300deg); background: #0ff;"></div>
</div>
<button id="spin-btn">开始抽奖</button>
JavaScript控制逻辑
const wheel = document.querySelector('.prize-wheel');
const spinBtn = document.getElementById('spin-btn');
spinBtn.addEventListener('click', () => {
wheel.classList.remove('stop');
wheel.classList.add('spinning');
setTimeout(() => {
wheel.classList.remove('spinning');
wheel.classList.add('slow-down');
setTimeout(() => {
wheel.classList.remove('slow-down');
wheel.classList.add('stop');
// 这里可以添加获奖逻辑
}, 2000);
}, 2000);
});
高级抽奖效果优化
添加指针和更平滑的动画效果:
.pointer {
position: absolute;
top: -20px;
left: 50%;
transform: translateX(-50%);
width: 0;
height: 0;
border-left: 15px solid transparent;
border-right: 15px solid transparent;
border-top: 30px solid #333;
z-index: 10;
}
.wheel-container {
position: relative;
width: 300px;
height: 300px;
}
.prize-wheel {
/* 之前的样式 */
box-shadow: 0 0 10px rgba(0,0,0,0.3);
}
响应式设计调整
@media (max-width: 600px) {
.prize-wheel {
width: 200px;
height: 200px;
}
.wheel-container {
width: 200px;
height: 200px;
}
}
通过组合CSS动画和JavaScript控制,可以创建出视觉效果良好的抽奖转盘。实际应用中,还需要根据具体需求调整动画时间、缓动函数和奖品分布等参数。






