CSSだけで円グラフを作成する

今回はCSSだけで円グラフを作成してみました。
まずはデモから。

See the Pen
by sayuri (@giraffeweb)
on CodePen.0

それぞれ説明していきます。

▼HTML

<div class="per c100 p50">
    <span>50%</span>
    <div class="slice">
      <div class="bar"></div>
      <div class="fill"></div>
    </div>
</div>

▼SCSS

.per {
  &.c100 {
    position: relative;
    width: 160px;
    height: 160px;
    border-radius: 50%;
    background-color: #ddd;
    margin: 0 2em 0 0;
   }
 &:after{
      position: absolute;
      top: 10px;
      left: 10px;
      display: block;
      content: " ";
      border-radius: 50%;
      background-color: #fff;
      width: 140px;
      height: 140px;
 }
}

ここで大枠の高さと幅を決定します。
円グラフの大小はここで調整してください。
afterではドーナツの穴の部分を作成しています。
大枠の幅に合わせて、高さと
幅のサイズを調整してください。

.per {
  &.c100 {
  span {
      position: absolute;
      width: 100%;
      z-index: 1;
      left: 0;
      top: 0;
      width: 160px;
      line-height: 160px;
      font-size: 0.2em;
      color: #000;
      display: block;
      text-align: center;
      white-space: nowrap;
      font-size: 18px;
      font-weight: 600;
    }
  }
}

span内はパーセンテージの文字部分の指定です。
円グラフのなかに表示されるように調整しているので
位置を変更したい場合はここを触ってください。

 .slice {
      position: absolute;
      width: 160px;
      height: 160px;
      .bar {
        position: absolute;
        width: 160px;
        height: 160px;
        border-radius: 50%;
    background-image: radial-gradient(#ddd 30%, transparent 31%), conic-gradient(#ff2200 0% 35%, #ddd 35% 100%);
      }
   }

sliceで幅と高さを指定して、中の円グラフのパーセンテージを表す円の指定を
barクラスで行います。

円グラフについては「radial-gradient」と「conic-gradient」を使用します。
詳しい解説はここでは避けますが、グラデーションの種類の一種です。

グラデーションを利用して、円グラフを作成します。
conic-gradientは中心点の周りを回りながら色が変化する画像を生成します。
そのため、「conic-gradient(#ff2200 0% 35%, #ddd 35% 100%)」で全体の背景色とパーセンテージ部分の色と割合を指定します。

みなさんもぜひCSSだけで円グラフの作成をしてみてくださいね!