如何通过百分比显示实现甜甜圈图

时间:2019-02-14 07:24:53

标签: css angular css3 css-transitions

它应该有一个完整的灰色环。填充百分比指示应为另一种颜色,例如绿色。

例如:如果指示为60%,则戒指的初始60%应该为绿色,其余40%为默认灰色。

现在主要查询出现在我们需要填充百分比指示的2种颜色(蓝色和绿色)渐变中。

对于上面相同的示例,对于60%的指示,我们应该将初始填充的30%变为蓝色,其余的30%填充为绿色,其余40%设置为默认灰色。

类似地,对于90%的指示=> 30%蓝色+ 60%绿色+ 10%灰色。

我已经尝试过使用svg使用线性渐变,但无法实现仅沿顺时针方向最多覆盖30%的蓝色(目前在两侧都有)。您可以看到60%也有混合色我不想要的蓝色。

所以我想知道如何仅从顺时针方向开始使指示条跨度达到30%,但不应跨环的左侧和右侧。您可以在下面的我的代码段结果中看到此行为。

此外,我还需要使环形动画在IE中工作,并且目前它在chrome中工作,而不是IE。

请让我知道是否有更好/简单的方法来实现这种外观。

.ec-custom-percent-container {
	 background: #f5f5f5;
}
 .ec-custom-percent-container .ec-custom-inner {
	 margin: 10px auto;
}
 .ec-custom-percent-container .ec-custom-inner .ec-custom-circular-chart {
	 width: 110px;
	 height: 110px;
}
  .ec-custom-percent-container .ec-custom-inner .ec-custom-circular-chart  .ec-custom-percentage {
               
			   font-size:10px;
			   color:black;
			       fill: black;
                text-anchor: middle;
}
            
             .ec-custom-percent-container .ec-custom-inner .ec-custom-circular-chart .ec-custom-text{
              
			  font-size:3px;
			   color:black;
			       fill: black;
                text-anchor: middle;
            }  
			
 .ec-custom-percent-container .ec-custom-inner .ec-custom-circular-chart .ec-custom-circle-bg {
	 fill: none;
	 stroke: #c9c9c9;
	 stroke-width: 3.8;
}
 .ec-custom-percent-container .ec-custom-inner .ec-custom-circular-chart .ec-custom-circle {
	 fill: none;
	 stroke-width: 3.6;
	 stroke-linecap: round;
	 animation: progress 1s ease-out forwards;
}
 .ec-custom-percent-container .ec-custom-inner .ec-custom-circular-chart .ec-custom-percentage {
	 text-anchor: middle;
}
 .ec-custom-percent-container .ec-custom-inner .ec-custom-circular-chart .ec-custom-text {
	 text-anchor: middle;
}
 @keyframes progress {
	 0% {
		 stroke-dasharray: 0 100;
	}
}
 .ec-custom-percent-container .ec-custom-inner .ec-custom-circular-chart.ec-custom-fill .ec-custom-circle {
	 stroke: url(#gradient);
}
<div class="ec-custom-percent-container">
  <div class="ec-custom-inner">
    <svg viewBox="0 0 36 36" class="ec-custom-circular-chart ec-custom-fill">
      <defs>
          <linearGradient id="gradient" x1="0%" y1="0%" x2="0%" y2="100%">
            <stop offset="0%" stop-color="#1b5fcd" />
            <stop offset="30%" stop-color="#17b68a" />
            <stop offset="100%" stop-color="#17b68a" />
          </linearGradient>
      </defs>
      <path class="ec-custom-circle-bg"
        d="M18 2.0845
        a 15.9155 15.9155 0 0 1 0 31.831
        a 15.9155 15.9155 0 0 1 0 -31.831"
      />
      <path class="ec-custom-circle"
      stroke-dasharray="90,100" 
        d="M18 2.0845
          a 15.9155 15.9155 0 0 1 0 31.831
          a 15.9155 15.9155 0 0 1 0 -31.831"
      />
      <text x="18" y="20.35" class="ec-custom-percentage">90%</text>
      <text x="17" y="24" class="ec-custom-text">Match</text>
    </svg>
  </div>
</div> 

0 个答案:

没有答案