如何用css做出一个等分圆


今天在群里有人问了一个问题就是如何做出:一个轮盘上的按钮,类似于:

 

后来经过讲解,发现这个东西是可以通过translate中的ratate来做的,基本思路先确定下来:

1.首先在最外层套一个div,在将为其设置border-radius;

2.再将图形分成两块,left和right,并且为其添加overflow:hidden

3.在left中创建4个小div,并且为其赋上特定的颜色,最后在分别将其旋转0,45,90,135

4.right同理;

最后附上源码:

<head>
  <title>CSS等分圆</title>
  <meta charset="utf-8">
  <style type="text/css">

    .circle-left{
      width: 100px;height: 200px;
      border-radius: 0px 100px 100px 0px;
      position: absolute;
      right: 0;
      transform-origin: 0 50%;
    }
    .circle-right{
      width: 100px;height: 200px;
      border-radius:  100px 0px 0px 100px ;
      position: absolute;
      right: 0;
      transform-origin: 100% 50%;
    }
    #circle0{
      width: 200px;height: 200px;
      border-radius: 100px;
      background-color: yellowgreen;
      position: relative;
    }
    #circle2{
      background-color: #70f3ff;
    }
    #circle3{
      background-color: #ff461f;
      transform: rotate(45deg);
    }
    #circle4{
      background-color: #bce672;
      transform: rotate(90deg);
    }
    #circle5{
      background-color: #ffffff;
      transform: rotate(135deg);
    }
    #circle6{
      background-color: #3b2e7e;
      transform: rotate(225deg);
    }
    #circle7{
      background-color: #ff2121;
      transform: rotate(270deg);
    }
    #circle8{
      background-color: #16a951;
      transform: rotate(315deg);
    }
    #circle9{
      background-color: #e0eee8;
    }
    #left{
      clip: rect(0px 100px 200px 0px);
      position: absolute;
      right: 0px;
      width: 100px;
      height: 200px;
      overflow: hidden;
    }
    #right{
      clip: rect(0px 100px 200px 0px);
      position: absolute;
      left: 0px;
      width: 100px;
      height: 200px;
      overflow: hidden;
    }

    .occlusion {
      position: absolute;
      top: 50%;
      left: 50%;
      transform: translate(-50px, -50px);
      background-color: skyblue;
      width: 100px;
      height: 100px;
      border-radius: 50%;
    }
  </style>
</head>
<body>

<div id="circle0">
  <div id="left">
    <div class="circle-left" id="circle2"></div>
    <div class="circle-left" id="circle3"></div>
    <div class="circle-left" id="circle4"></div>
    <div class="circle-left" id="circle5"></div>
  </div>
  <div id="right">
    <div class="circle-right" id="circle9"></div>
    <div class="circle-right" id="circle8"></div>
    <div class="circle-right" id="circle7"></div>
    <div class="circle-right" id="circle6"></div>
  </div>

  <div class="occlusion"></div>
</div>
</body>

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM