То, как вы получаете круговую диаграмму с помощью CSS-поворота и отсечения, делает невозможным действительно знать, где на самом деле находится «граница», и я не думаю, что вы можете использовать border
или clip-path
, чтобы сильно помочь здесь(может быть, clip-path
и многоугольники, это слишком сложно для меня!)
Вы можете поместить еще divs
внутрь вашего .centerOverlay
, чтобы он действовал как дополнительные обтравочные маски, а затем расположите их так, чтобы их средняя точка была наточный центр, вращение и перевод (не совсем весело, но).Я сделал два из них здесь в качестве примера:
.palette {
height: 48px;
width: 48px;
position:relative;
}
.palette .colorOuter1,
.palette .colorOuter2,
.palette .colorOuter3,
.palette .colorOuter4,
.palette .colorOuter5 {
height: 200px;
width: 200px;
border-radius: 50%;
position: absolute;
top: 0;
left: 0;
clip: rect(0px, 200px, 200px, 100px);
}
.palette .colorOuter1 {
clip: auto;
background: #eee;
}
.palette .colorOuter2 {
transform: rotate(0deg);
}
.palette .colorOuter2 {
transform: rotate(72deg);
}
.palette .colorOuter3 {
transform: rotate(144deg);
}
.palette .colorOuter4 {
transform: rotate(216deg);
}
.palette .colorOuter5 {
transform: rotate(288deg);
}
.palette .colorInner1,
.palette .colorInner2,
.palette .colorInner3,
.palette .colorInner4,
.palette .colorInner5 {
position: absolute;
top: 0;
left: 0;
width: 200px;
height: 200px;
border-radius: 50%;
transform: rotate(72deg);
}
.palette .colorInner1 {
background: #5D5E63;
clip: rect(0px, 100px, 200px, 0px);
}
.palette .colorInner2 {
background-color: #AEADA9;
clip: rect(0px, 100px, 100px, 0px);
}
.palette .colorInner3 {
background-color: #D5C4A8;
clip: rect(0px, 100px, 100px, 0px);
}
.palette .colorInner4 {
background-color: #AA875F;
clip: rect(0px, 100px, 100px, 0px);
}
.palette .colorInner5 {
background-color: #B7CBC7;
clip: rect(0px, 100px, 100px, 0px);
}
.palette .centerOverlay {
position: absolute;
border-radius: 50%;
top: 60px;
left: 60px;
background: #fff;
width: 80px;
height: 80px;
display: block;
clip: auto;
}
.palette .north {
position:absolute;
top: -60px;
left: 50%;
background-color:white;
width:4px;
height:100px;
}
.palette .northeast {
position:absolute;
top: -10px;
left: 50%;
background-color:white;
width:4px;
height:100px;
transform: rotate(72deg) translate(0px, -50px)
}
<div class="palette">
<div class="colorOuter1">
<div class="colorInner1"></div>
</div>
<div class="colorOuter2">
<div class="colorInner2"></div>
</div>
<div class="colorOuter3">
<div class="colorInner3"></div>
</div>
<div class="colorOuter4">
<div class="colorInner4"></div>
</div>
<div class="colorOuter5">
<div class="colorInner5"></div>
</div>
<div class="centerOverlay">
<div class="north"></div>
<div class="northeast"></div>
</div>
</div>