如何在CSS中制作饼图

Roh*_*zad 17 css css3

如何使用CSS创建一个饼图,如下所示?

在此输入图像描述

小智 10

天啊!你看过谷歌图表工具吗?

https://google-developers.appspot.com/chart/interactive/docs/gallery/piechart

这很容易实现,但我的问题是"外部api"部分.如果谷歌决定可以这个或谷歌下来,再见图表!但就美观和其他图表的选择而言,谷歌排行榜有点酷.

  • 这不会像您所要求的那样在 CSS 中制作图表......并且不应该是公认的答案。如果您喜欢这个答案,您应该将问题更改为“如何在 JavaScript/CSS 中制作饼图”。 (6认同)
  • 你的答案中的死链接,另一个放在列表中的链接 https://gcemetery.co/ (2认同)

Mas*_*aba 8

我发现是最简单的纯CSS解决方案。下面略有简化。

    .pieContainer {
      height: 150px;
      position: relative;
    }
    
    .pieBackground {
      position: absolute;
      width: 150px;
      height: 150px;
      border-radius: 100%;
      box-shadow: 0px 0px 8px rgba(0,0,0,0.5);
    } 
    
    .pie {
      transition: all 1s;
      position: absolute;
      width: 150px;
      height: 150px;
      border-radius: 100%;
      clip: rect(0px, 75px, 150px, 0px);
    }
    
    .hold {
      position: absolute;
      width: 150px;
      height: 150px;
      border-radius: 100%;
      clip: rect(0px, 150px, 150px, 75px);
    }
    
    #pieSlice1 .pie {
      background-color: #1b458b;
      transform:rotate(30deg);
    }
    
    #pieSlice2 {
      transform: rotate(30deg);
    }
    
    #pieSlice2 .pie {
      background-color: #0a0;
      transform: rotate(60deg);
    }
    
    #pieSlice3 {
      transform: rotate(90deg);
    }
    
    #pieSlice3 .pie {
      background-color: #f80;
      transform: rotate(120deg);
    }
    
    #pieSlice4 {
      transform: rotate(210deg);
    }
    
    #pieSlice4 .pie {
      background-color: #08f;
      transform: rotate(10deg);
    }
    
    #pieSlice5 {
      transform: rotate(220deg);
    }
    
    #pieSlice5 .pie {
      background-color: #a04;
      transform: rotate(70deg);
    }
    
    #pieSlice6 {
      transform: rotate(290deg);
    }
    
    #pieSlice6 .pie {
      background-color: #ffd700;
      transform: rotate(70deg);
    }
    
    .innerCircle {
      position: absolute;
      width: 120px;
      height: 120px;
      background-color: #444;
      border-radius: 100%;
      top: 15px;
      left: 15px; 
      box-shadow: 0px 0px 8px rgba(0,0,0,0.5) inset;
      color: white;
    }
    .innerCircle .content {
      position: absolute;
      display: block;
      width: 120px;
      top: 30px;
      left: 0;
      text-align: center;
      font-size: 14px;
    }
Run Code Online (Sandbox Code Playgroud)
    <div class="pieContainer">
      <div class="pieBackground"></div>
      <div id="pieSlice1" class="hold"><div class="pie"></div></div>
      <div id="pieSlice2" class="hold"><div class="pie"></div></div>
      <div id="pieSlice3" class="hold"><div class="pie"></div></div>
      <div id="pieSlice4" class="hold"><div class="pie"></div></div>
      <div id="pieSlice5" class="hold"><div class="pie"></div></div>
      <div id="pieSlice6" class="hold"><div class="pie"></div></div>
      <div class="innerCircle"><div class="content"><b>Data</b><br>from 16<sup>th</sup> April, 2014</div></div>
    </div>
Run Code Online (Sandbox Code Playgroud)

  • 真的。对于超过 50% 的切片,您必须创建两个切片;50% 之一,其余之一。 (2认同)

小智 6

我看到有人选择了Google Developers Tool,它非常难用,它也使用JS,而您只需要CSS。因此,这是使用背景渐变制作的最简单的方法,即Pure CSS

.pie {
  width: 400px;
  height: 400px;
  background-image: conic-gradient(orange 64%, blue 17%, black);
  border-radius: 50%
}
Run Code Online (Sandbox Code Playgroud)
<div class="pie"></div>
Run Code Online (Sandbox Code Playgroud)

  • Firefox (69) 表示“背景图像”无效,并且不显示任何内容。 (5认同)