【发布时间】:2020-12-24 04:02:00
【问题描述】:
我正在尝试创建一个基于百分比完成圆圈的方程式或方法。
这是我所拥有的:
我希望能够完成基于百分比增加的圆圈,并让它从侧面开始,如下图所示:
我试图让对齐方式相似,但我没有运气或计算。
这是我的代码:
#progress-bar {
position: absolute;
left: 50%;
top: 55%;
transform: translate(-51%, -50%);
width: 40%;
}
.container {
position: relative;
width: 100%;
display: flex;
justify-content: space-around;
}
.container .card {
position: relative;
width: 400px;
display: flex;
justify-content: center;
align-items: center;
height: 400px;
border-radius: 4px;
text-align: center;
overflow: hidden;
transition: 0.5s;
}
.container .card:before {
content: '';
position: absolute;
top: 0;
left: -50%;
width: 100%;
height: 100%;
background: rgba(255, 255, 255, 0.03);
pointer-events: none;
z-index: 1;
}
.percent {
position: relative;
width: 300px;
height: 300px;
border-radius: 50%;
box-shadow: inset 0 0 50px #000;
background: #222;
z-index: 1000;
}
.percent .number {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
border-radius: 50%;
}
.percent .number h2 {
color: #777;
font-weight: 700;
font-size: 40px;
transition: 0.5s;
}
.card:hover .percent .number h2 {
color: #fff;
font-size: 60px;
}
.percent .number h2 span {
font-size: 24px;
color: #777;
transition: 0.5s;
}
.card:hover .percent .number h2 span {
color: #fff;
}
.text {
position: relative;
color: #777;
margin-top: 40px;
font-weight: 700;
font-size: 18px;
letter-spacing: 1px;
text-transform: uppercase;
transition: 0.5s;
}
svg {
position: relative;
width: 123%;
height: 123%;
z-index: 1000;
}
svg circle {
width: 100%;
height: 100%;
fill: none;
stroke: #191919;
stroke-width: 10;
stroke-linecap: round;
transform: translate(-28px, -28px);
}
svg circle:nth-child(2) {
stroke-dasharray: 440;
stroke-dashoffset: calc( 440 - (440 * 90) / 100);
stroke: #00ff43;
}
<div class="container">
<div class="card">
<div class="box">
<div class="percent">
<svg>
<!-- <circle cx="70" cy="70" r="70"></circle>
<circle cx="70" cy="70" r="70"></circle> -->
<circle cx="50%" cy="50%" r="40%"></circle>
<circle cx="50%" cy="50%" r="40%"></circle>
</svg>
<div class="number">
<h2>60<span>%</span></h2>
</div>
</div>
<h2 class="text">69 of 115 Goals Completed</h2>
</div>
</div>
</div>
【问题讨论】:
标签: css geometry progress calculation