如何用CSS分割不同颜色的圆
我希望能够用另一种颜色的线段绘制一个圆,我希望覆盖的部分的数量能够从0%
到100%
以10%
增量增加。
Google上的所有示例都不是细分市场。
到目前为止,这是我所能想到的最好的:
div.outerClass { position: absolute; left: 10px; top: 10px; height: 2.5px; overflow: hidden; -ms-transform: rotate(270deg); /* IE 9 */ -webkit-transform: rotate(270deg); /* Chrome, Safari, Opera */ transform: rotate(270deg); } div.innerClass { width: 10px; height: 10px; border: 5px solid green; border-radius: 36px; }
<div class="outerClass"> <div class="innerClass"></div> </div>
0%
, 50%
和100%
我都可以。
跨浏览器解决scheme:
的jsfiddle
.circle { border-radius: 50%; background: gray; width: 300px; height: 300px; overflow: hidden; } .segment { float: left; width: 10%; height: 100%; } .segment_1 { background: red; } .segment_2 { background: green; } .segment_3 { background: yellow; } .segment_4 { background: blue; }
<div class="circle"> <div class="segment segment_1"></div> <div class="segment segment_2"></div> <div class="segment segment_3"></div> <div class="segment segment_4"></div> </div>
你可以使用linear-gradient
来做到这一点
.circle{ position:absolute; width:80px; height:80px; border-radius:50%; background: linear-gradient( to right, yellow 0%, yellow 10%, orange 10%, orange 20%, yellow 20%, yellow 30%, orange 30%, orange 40%, yellow 40%, yellow 50%, orange 50%, orange 60%, yellow 60%, yellow 70%, orange 70%, orange 80%, yellow 80%, yellow 90%, orange 90%, orange 100% ); }
<div class="circle"></div>
BOX阴影
另一种方法可能是使用一个元素和方块阴影。
-
主要元素是一个圆(
border-radius: 50%;
),并具有1:1的宽高比。 -
伪元素位于
left: -100%;
,或者就在主元素的左边。 -
10个盒子阴影被应用到pseudoelement,以不同的颜色和不同的abscissae。 我已经把横坐标30px,因为30px是300px的10%…
-
select宽度的10%是因为需要10个条纹。
div { height: 300px; width: 300px; border: 1px solid black; position: relative; border-radius: 50%; overflow: hidden; } div:before { position: absolute; content: ''; height: inherit; width: inherit; left: -100%; background: red; box-shadow: 30px 0 0 chocolate, 60px 0 0 hotpink, 90px 0 0 indigo, 120px 0 0 orangered, 150px 0 0 gold, 180px 0 0 deepskyblue, 210px 0 0 springgreen, 240px 0 0 darkslategray, 270px 0 0 gold, 300px 0 0 navy; }
<div></div>
另一种方法是使用SVG。 这些段由<rect />
元素构成,并使用<clipPath/>
元素剪切成一个圆:
svg{width:40%;display:block;margin:0 auto;} use:hover{fill:#000;}
<svg viewBox="0 0 10 10"> <defs> <clipPath id="circle"> <circle cx="5" cy="5" r="5" /> </clipPath> <rect id="seg" y="0" width="1" height="10" /> </defs> <g clip-path="url(#circle)"> <use xlink:href="#seg" x="0" fill="pink"/> <use xlink:href="#seg" x="1" fill="green" /> <use xlink:href="#seg" x="2" fill="orange" /> <use xlink:href="#seg" x="3" fill="teal" /> <use xlink:href="#seg" x="4" fill="tomato"/> <use xlink:href="#seg" x="5" fill="gold"/> <use xlink:href="#seg" x="6" fill="darkorange" /> <use xlink:href="#seg" x="7" fill="pink" /> <use xlink:href="#seg" x="8" fill="red" /> <use xlink:href="#seg" x="9" fill="yellow" /> </g> </svg>