我发现了一些圆形进度条,但我不知道它们是如何填充的。这是一些代码笔的链接:https://codepen.io/anon/pen/aeEEmx
据我所知,当您使用渐变并添加位置(在本例中为度)时,它应该从您指定值的位置开始。例如,CSS中的progress-20类有一个18度的线性渐变,然后是另一个90度的线性渐变,但我无法理解这些值如何一起工作18度和90度或-18度和90度在那个30%的线性渐变中.
代码如下:
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
html,
body {
background-color: #fff;
font-family: "Lato", "Arial", "san-serif";
color: #555;
font-size: 20px;
font-weight: 300px;
text-rendering: optimizeLegibility;
}
.radialProgressBar {
border-radius: 50%;
-webkit-transform: translate(50%, 50%);
transform: translate(50%, 50%);
width: 100px;
height: 100px;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
background: #ddd;
margin: 20px;
}
.radialProgressBar .overlay {
border-radius: 50%;
width: 80px;
height: 80px;
margin: auto;
background: #fff;
text-align: center;
padding-top: 30%;
}
.progress-20 {
background-image: linear-gradient(18deg, #ddd 50%, transparent 50%), linear-gradient(90deg, #028cd5 50%, #ddd 50%);
}
.progress-30 {
background-image: linear-gradient(-18deg, #ddd 50%, transparent 50%), linear-gradient(90deg, #028cd5 50%, #ddd 50%);
}
.progress-40 {
background-image: linear-gradient(-54deg, #ddd 50%, transparent 50%), linear-gradient(90deg, #028cd5 50%, #ddd 50%);
}
.progress-70 {
background-image: linear-gradient(90deg, #028cd5 50%, transparent 50%), linear-gradient(18deg, #028cd5 50%, #ddd 50%);
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<div class="radialProgressBar progress-20">
<div class="overlay">20</div>
</div>
<div class="radialProgressBar progress-30">
<div class="overlay">30</div>
</div>
<div class="radialProgressBar progress-40">
<div class="overlay">40</div>
</div>
<div class="radialProgressBar progress-70">
<div class="overlay">70</div>
</div>
</body>
</html>
最佳答案
这是使用几个重叠的渐变制成的。如果您对不同的渐变使用不同的颜色,您可以更容易地看到该方法。 90 度梯度将图表切成两半,而另一个梯度(本例中为 18 度)覆盖蓝色的其余部分,仅留下相关的蓝色部分可见。
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
html,
body {
background-color: #fff;
font-family: "Lato", "Arial", "san-serif";
color: #555;
font-size: 20px;
font-weight: 300px;
text-rendering: optimizeLegibility;
}
.radialProgressBar {
border-radius: 50%;
-webkit-transform: translate(50%, 50%);
transform: translate(50%, 50%);
width: 100px;
height: 100px;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
background: #ddd;
margin: 20px;
}
.radialProgressBar .overlay {
border-radius: 50%;
width: 80px;
height: 80px;
margin: auto;
text-align: center;
padding-top: 30%;
}
.oneGradient {
background-image: linear-gradient(90deg, #028cd5 50%, #ddd 50%);
}
.differentColor {
background-image: linear-gradient(18deg, #aaa 50%, transparent 50%), linear-gradient(90deg, #028cd5 50%, #ddd 50%);
}
.sameColor {
background-image: linear-gradient(18deg, #ddd 50%, transparent 50%), linear-gradient(90deg, #028cd5 50%, #ddd 50%);
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<div class="radialProgressBar oneGradient">
<div class="overlay"></div>
</div>
<div class="radialProgressBar differentColor">
<div class="overlay"></div>
</div>
<div class="radialProgressBar sameColor">
<div class="overlay"></div>
</div>
</body>
</html>
关于html - 这些圆形进度条是如何填充的呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57370452/