绘制抽奖转盘 (CSS+JS)
Hello!这里是万物之恋,今天来教大家用css+js来简单绘制一个抽奖轮盘(不可转动)
HTML部分
<div class="box"> <h1>幸运大转盘</h1> <div class="giant-box"> <div class="prize"> <span class="prize-text">一等奖</span> </div> <div class="prize"> <span class="prize-text">二等奖</span> </div> <div class="prize"> <span class="prize-text">三等奖</span> </div> <div class="prize"> <span class="prize-text">四等奖</span> </div> <div class="prize"> <span class="prize-text">五等奖</span> </div> <div class="prize"> <span class="prize-text">六等奖</span> </div> <div class="prize"> <span class="prize-text">七等奖</span> </div> <div class="prize"> <span class="prize-text">八等奖</span> </div> <div class="prize"> <span class="prize-text">九等奖</span> </div> <div class="prize"> <span class="prize-text">十等奖</span> </div> </div> <button type="button" class="giantBtn"">开始抽奖</button> </div>
CSS部分
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
display: flex;
justify-content: center;
background-color: #55557f;
}
.box {
width: 380px;
height: 600px;
margin-top: 50px;
background-color: #aaaa7f;
padding: 15px 20px;
position: relative;
}
.box h1 {
text-align: center;
}
.giant-box {
width: 340px;
height: 340px;
margin-top: 50px;
border-radius: 50%;
background: #fff;
text-align: center;
position: relative;
overflow: hidden;
}
.prize {
position: absolute;
top: 0px;
left: 110px;
padding-top: 5px;
transform-origin: bottom center;
border-top: 170px solid;
border-left: 59px solid transparent;
border-right: 59px solid transparent;
/* 将所有的盒子绘制成倒三角形,并利用定位叠加在一起 */
}
.prize-text {
position: absolute;
top: -145px;
left: -10px;
font-size: 20px;
/* 将盒子里的文字定位放好 */
}
.giantBtn {
width: 80px;
height: 80px;
position: absolute;
top: 234px;
left: 150px;
border-radius: 50%;
border: none;
outline: none;
background-color: antiquewhite;
cursor: pointer;
}
.giantBtn::after {
content: ;
border-width: 33px 22px;
border-style: solid;
border-color: transparent;
border-bottom-color: antiquewhite;
position: absolute;
top: -52px;
left: 18px;
/* 利用伪类为按钮添加指针 */
}
现在的样子
JS部分
// 获取到所有的三角形盒子
var prizes = document.querySelectorAll(.prize);
// 通过循环遍历来将其旋转,并添加不同的背景色
for (var i = 0; i < prizes.length; i++) {
prizes[i].style.transform = `rotate(${
i*36}deg)`;
if (i % 2 == 0) {
prizes[i].style.borderTopColor = "#cd9cf2";
} else {
prizes[i].style.borderTopColor = "#f6f3ff";
}
};
最终效果
谢谢大家的阅读,这里是万物之恋,我们下次再见了!
上一篇:
通过多线程提高代码的执行效率例子
下一篇:
关于游戏服务器是多线程还是单线程的讨论
