В значительной степени я делаю половину кольцевой диаграммы. Нашел какой-то код в интернете, но на самом деле это не так, как я хочу. Он использует <ul>
и <li>
и границы, а также использует анимацию для заполнения графика.
Я пытался дать ему левое поле, и да, он идет в диаграмму, но получить его в середине очень сложно.
.chart {
position: relative;
width: 50rem;
height: 25rem;
overflow: hidden;
}
.chart::before,
.chart::after {
position: absolute;
}
.chart::before {
content: '';
width: inherit;
height: inherit;
border: 5rem solid rgba(211, 211, 211, .3);
border-bottom: none;
border-top-left-radius: 25rem;
border-top-right-radius: 25rem;
}
.chart::after {
content: '';
left: 50%;
bottom: 10px;
transform: translateX(-50%);
font-size: 1.1rem;
font-weight: bold;
color: cadetblue;
}
.chart li {
position: absolute;
top: 100%;
left: 0;
width: inherit;
height: inherit;
border: 5rem solid;
border-top: none;
border-bottom-left-radius: 25rem;
border-bottom-right-radius: 25rem;
transform-origin: 50% 0;
transform-style: preserve-3d;
backface-visibility: hidden;
animation-fill-mode: forwards;
animation-duration: .4s;
animation-timing-function: linear;
}
.chart li:nth-child(1) {
z-index: 11;
border-color: rgb(197, 8, 8);
animation-name: rotate-one;
}
.chart li:nth-child(2) {
z-index: 10;
border-color: rgb(11, 139, 245);
animation-name: rotate-two;
animation-delay: .4s;
}
.chart li:nth-child(3) {
z-index: 9;
border-color: rgb(216, 116, 23);
animation-name: rotate-three;
animation-delay: .8s;
}
.chart li:nth-child(4) {
z-index: 8;
border-color: rgb(92, 197, 89);
animation-name: rotate-four;
animation-delay: 1.2s;
}
/* ..... here is the span or text i want centered */
.chart li span {
position: relative;
display: block;
float: left;
font-size: 1.85rem;
backface-visibility: hidden;
/**/
color: rgb(5, 5, 5);
font-weight: 600;
font-family: sans-serif;
margin-left: -2.25em;
text-align: center;
}
.chart li:nth-child(1) span {
transform: rotate(-59.65714285714286deg);
}
.chart li:nth-child(2) span {
transform: rotate(-98.22857142857143deg);
animation-delay: .4s;
}
.......... this is the animations that the wedges/borders do
@keyframes rotate-one {
100% {
transform: rotate(59.65714285714286deg);
/**
* 12% => 21.6deg
*/
}
}
@keyframes rotate-two {
0% {
transform: rotate(59.65714285714286deg);
}
100% {
transform: rotate(98.22857142857143deg);
/**
* 32% => 57.6deg
* 57.6 + 21.6 => 79.2deg
*/
}
}
<ul class="chart">
<li>
<span>116</span>
</li>
<li>
<span>75</span>
</li>
<li>
<span>47</span>
</li>
<li>
<span>44</span>
</li>
<li>
<span>38</span>
</li>
<li>
<span></span>
</li>
<li>
<span></span>
</li>
<li>
<span></span>
</li>
<li>
<span></span>
</li>
<li>
<span></span>
</li>
<li>
<span></span>
</li>
<ul>
введите описание изображения здесь