【发布时间】:2020-07-15 22:15:54
【问题描述】:
我正在尝试使用 css 和 html 创建一个饼图。我只是显示一些静态数字,因此我尽量保持相对简单,不使用任何动画。
我目前在如何创建我想要的外观方面遇到了障碍。下面的代码 sn-p 完全按照我的意愿工作,问题是 conic-gradient 不受 firefox 和 Internet Explorer 支持,这将是该项目的一个问题。
.progress-circle {
--d: 50px;
--color: #002F65;
--progress: 40;
border-radius: var(--d);
height: var(--d);
width: var(--d);
background: conic-gradient( var(--color) calc(calc(var(--progress) / 100) * 360deg), transparent calc(calc(var(--progress) / 100) * 360deg));
}
<div class="progress-circle"></div>
我一直在寻找类似于上面示例的替代方法,这使我看到了这篇文章:designing simple pie charts with css
我的问题是计算饼图百分比增长的方式似乎与我想要完成的事情不兼容。因为它是由transform: rotate(.1turn);确定的
我的主要问题是可以使conic-gradient 与其他浏览器兼容吗?如果不是,那么使用 css 制作饼图以与第一个示例非常相似的最佳方法是什么?
对于上下文,我将从数组中传递数据以确定饼图的百分比。
.pie {
width: 100px; height: 100px;
border-radius: 50%;
background: yellowgreen;
background-image:
linear-gradient(to right, transparent 50%, #655 0);
}
.pie::before {
content: "";
display: block;
margin-left: 50%;
height: 100%;
border-radius: 0 100% 100% 0 / 50%;
background: #655;
transform-origin: left;
transform: rotate(.1turn);
}
<div class="pie"></div>
【问题讨论】:
-
检查这个:stackoverflow.com/a/52205730/8620333(去掉顶层,你得到你想要的)
-
@TemaniAfif 感谢您的回复。您的示例对我正在寻找的内容有所帮助,但我有几个问题,因为您是发布答案的人。我将如何传递百分比值?例如,这似乎是由学位决定的;如果我想通过
40%覆盖 40% 。我提供了一个 jsfiddle 链接作为示例:jsfiddle.net/94jrmkdc/20