html旋转代码_用CSS实现一个抽奖转盘(附详细代码+思路)

18ceb89543b7cbdc99df8122bdf26418.png

原文:https://www.cnblogs.com/wenruo/p/9732704.html

先上效果

f01f74aa8eb8415fdc158f820584796f.gif

基本是用CSS实现的,没有用图片,加一丢丢JS。不过没有考虑太多兼容性。

首先画一个转盘

<html lang="en"><head>  <meta charset="UTF-8">  <title>幸运大转盘title>  <style>    /* 重置默认样式 */    * {
          margin: 0;      padding: 0;      border: none;      outline: none;    }    .wrapper {
          position: relative;      height: 200px;      width: 200px;      padding: 20px;      margin: 20px;      background-color: #c0381f;      box-shadow: #000000 0px 0px 10px;      border-radius: 50%;    }    .panel {
          position: relative;      height: 200px;      width: 200px;      background-color: #b7b7b7;      border-radius: 100px;    }    .pointer {
          position: absolute;      left: 79px;      top: 79px;      z-index: 10;      height: 30px;      width: 30px;      padding: 6px;      color: #fff899;      line-height: 15px;      font-size: 12px;      text-align: center;      background-color: #dc5b5b;      border-radius: 50%;      border: 1px solid #c0381f;    }style>head><body>  <div class="wrapper">    <div class="panel">      <div class="pointer">开始抽奖div>    div>  div>body>html>

效果如下,配色什么的不要在意,可能比较丑。。。

a4d89e0aaa0dc3cb88746926b11eb838.png

然后写抽奖指针的小箭头,用CSS画三角形是一个比较常见的问题,通过设置width和height为0,然后用border实现。

4578a635db7022bad6283db0fc6c63f4.png

如图,矩形是由四个三角形边框组成的,只要设置其它边颜色为透明,就可以获得单独的三角形。

这里通过伪元素after实现三角形,并通过绝对定位将三角形定位到中间小圆的顶端。

.pointer::after {
          content: '';      position: absolute;      left: 14px;      top: -24px;      border-width: 12px 6px;      border-style: solid;      border-color: transparent;      border-bottom-color: #c0381f;}

现在才像一个指针了。 

3ae3fe968c0d6a4dffcbe3182c65c936.png

哦 接下来是实现转盘背景,不同的扇区对应不同的奖品,这样就有一个需求:实现任意角度扇形。

可能会想当然的认为和三角形一样,不过是加一个border-radius而已,高度是圆半径,宽度是tan(θ/2),但是实现出来的效果和想象并不一样……(可能需要做一些其他操作以达到效果,但是我没想到。

最后还是求助了搜索引擎。不得不承认dalao们实在是太nb了,qaq……通过 linear-gradient 实现想法是真的棒。不过还有好多复杂的实现看的不是很懂= =

How to draw a circle sector in CSS?

Segments in a circle using CSS3

3种纯CSS实现中间镂空的12色彩虹渐变圆环方法

实现就是通过两个正方形取相交区域。

7be3b8809801b2a2bc4071a9572bd3a9.png

我觉图画的还是挺好的:D 

没有用伪元素实现,因为我还要加文字,至于文字的位置,我真的是瞎调的,反正正经写代码也不会这么写= =

<html lang="en"><head>    <meta charset="UTF-8">    <title>Docu
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是实现抽奖大转盘的HTMLCSS代码思路HTML代码: ``` <div class="container"> <div class="wheel"> <div class="section"><span>1</span></div> <div class="section"><span>2</span></div> <div class="section"><span>3</span></div> <div class="section"><span>4</span></div> <div class="section"><span>5</span></div> <div class="section"><span>6</span></div> <div class="section"><span>7</span></div> <div class="section"><span>8</span></div> </div> <div class="pointer"></div> </div> ``` CSS代码: ``` .container { position: relative; width: 300px; height: 300px; } .wheel { position: absolute; top: 0; left: 0; width: 300px; height: 300px; border-radius: 50%; background-color: #f7f7f7; display: flex; flex-wrap: wrap; justify-content: center; align-items: center; transform: rotate(0deg); transition: transform 6s ease; } .section { position: relative; width: 100px; height: 100px; transform-origin: 50% 50%; transition: transform 6s ease; } .section span { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); font-size: 24px; font-weight: bold; } .section:nth-child(1) { background-color: #ffcccc; transform: rotate(0deg); } .section:nth-child(2) { background-color: #cceeff; transform: rotate(45deg); } .section:nth-child(3) { background-color: #ffffcc; transform: rotate(90deg); } .section:nth-child(4) { background-color: #ccffcc; transform: rotate(135deg); } .section:nth-child(5) { background-color: #ffccff; transform: rotate(180deg); } .section:nth-child(6) { background-color: #ccffff; transform: rotate(225deg); } .section:nth-child(7) { background-color: #ffeecc; transform: rotate(270deg); } .section:nth-child(8) { background-color: #e3e3e3; transform: rotate(315deg); } .pointer { position: absolute; top: 50%; left: 50%; width: 30px; height: 30px; background-color: red; border-radius: 50%; transform: translate(-50%, -50%) rotate(0deg); transition: transform 6s ease; } .rotate { transform: rotate(2160deg); } ``` 实现思路: 1. 在HTML中创建一个容器,容器中包含一个转盘和一个指针。 2. 使用CSS中的flex布局将转盘中的扇形均分为8份,并设置每个扇形的背景颜色、旋转角度和文本内容。 3. 通过CSS中的transform属性实现转盘的旋转,使用transition属性控制旋转速度。 4. 通过CSS中的transform属性实现指针的旋转,使用transition属性控制旋转速度。 5. 在JavaScript中监听点击抽奖按钮的事件,并在事件处理函数中添加CSS类名,实现转盘旋转的效果。 6. 在JavaScript中监听转盘旋转结束的事件,并在事件处理函数中根据指针所指的扇形位置判断抽奖结果,并弹出提示框显示抽奖结果。 以上就是实现抽奖大转盘的HTMLCSS代码思路

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值