그래서 저는 이것을 이전 답변에서 가져 와서 올바른 모양으로 바꾸기 위해 약간 수정했습니다.
CSS의 제한 사항 때문에 SVG와 같은 것을 사용하지 않으면 각 세그먼트 사이의 간격이 어려워집니다.
완벽하지는 않으며 순수 CSS만으로 완벽하게 만들 수 없습니다.
.wheel,
.umbrella,
.color {
content: "";
position: absolute;
border-radius: 50%;
width: 15em;
height: 15em;
margin: 0;
padding: 0;
}
.wheel {
overflow: hidden;
width: 15em;
height: 15em;
position: relative;
border: 1px solid black;
transform: rotate(270deg);
padding: 3px;
}
.umbrella {
position: relative;
-webkit-transform: scale(1.35);
margin: 3px;
padding: 5px;
}
.color,
.color:nth-child(n+7):after {
clip: rect(0, 15em, 15em, 7.5em);
}
.color:after,
.color:nth-child(n+7) {
content: "";
position: absolute;
border-radius: 50%;
left: calc(50% - 7.5em);
top: calc(50% - 7.5em);
width: 15em;
height: 15em;
clip: rect(0, 7.5em, 15em, 0);
}
.color:nth-child(1):after {
background-color: #9ED110;
transform: rotate(30deg);
z-index: 12;
}
.color:nth-child(2):after {
background-color: #50B517;
transform: rotate(60deg);
z-index: 11;
}
.color:nth-child(3):after {
background-color: #179067;
transform: rotate(90deg);
z-index: 10;
}
.color:nth-child(4):after {
background-color: #476EAF;
transform: rotate(120deg);
z-index: 9;
}
.color:nth-child(5):after {
background-color: #9f49ac;
transform: rotate(150deg);
z-index: 8;
}
.color:nth-child(6):after {
background-color: #CC42A2;
transform: rotate(180deg);
z-index: 7;
}
<div class="wheel">
<ul class="umbrella">
<li class="color"></li>
<li class="color"></li>
<li class="color"></li>
<li class="color"></li>
<li class="color"></li>
<li class="color"></li>
</ul>
</div>
대안은 다음 CSS의 클립 경로로 참조되는 단일 SVG 모양을하는 것입니다. 위의 코드는 정확히 동일하게 유지 될 것입니다. 모양이 생성되는 방식이 변경 될 것입니다.
다른 메모 : 선형 그래디언트를 보았지만 개별 요소를 선호합니다. – Fox
세그먼트가 다른 색상이어야합니까? – Martin
음수. 색상이 다를 필요는 없지만 코드와 관련해서는 중요하지 않습니다. CSS에서 HTML을 통해 출력되는 각 요소에 '색상'(LESS) 또는 '배경'을 자유롭게 적용 할 수 있습니다. – Fox