用CSS或SVG画半圈

时间:2014-12-29 03:16:56

标签: css css3 svg css-shapes

我正在寻找一种使用CSS或SVG绘制此圆圈底部的方法。我见过this answer但是它处理的是一个完美的半圆,而我需要一个额外的段来切断它使它不到一半。使用纯CSS可能无法实现,但SVG的答案对我来说很难修改。

<svg class="pie">
  <circle cx="115" cy="115" r="110"></circle>
  <path d="M115,115 L115,5 A110,110 1 0,1 225,115 z"></path>
</svg>

enter image description here

3 个答案:

答案 0 :(得分:17)

为什么不在arc命令中使用两个path元素?

&#13;
&#13;
<svg width="135" height="135">
  <path d="M125,85 a60,60 0 1,0 -115,0" fill="#E79A16" /><!--Top Half-->
  <path d="M10,85 a60,60 0 0,0 115,0" fill="#D78500" /><!--Bottom Half-->
</svg>
&#13;
&#13;
&#13;


您可以轻松地将它们分开。

&#13;
&#13;
<svg width="135" height="135">
  <path d="M125,80 a60,60 0 1,0 -115,0" fill="#E79A16" /><!--Top Half-->
</svg>
<svg width="135" height="135">
  <path d="M10,80 a60,60 0 0,0 115,0" fill="#D78500" /><!--Bottom Half-->
</svg>
<svg width="135" height="135">
  <path d="M10,0 a60,60 0 0,0 115,0" fill="#D78500" /><!--Bottom Half-->
</svg>
&#13;
&#13;
&#13;


答案 1 :(得分:6)

您可以使用CSS:

&#13;
&#13;
.partial-circle {
  position: relative;
  height: 20px;
  width: 100px;
  overflow: hidden;
}
.partial-circle:before {
  content: '';
  position: absolute;
  height: 100px;
  width: 100px;
  border-radius: 50%;
  bottom: 0;
  background: #D08707;
}
&#13;
<div class="partial-circle"></div>
&#13;
&#13;
&#13;

您还可以拥有这两部分:

&#13;
&#13;
.partial-circle {
  position: relative;
  width: 100px;
  overflow: hidden;
}
.partial-circle:before {
  content: '';
  position: absolute;
  height: 100px;
  width: 100px;
  border-radius: 50%;
}
.partial-circle.top {
  height: 80px;
}
.partial-circle.bottom {
  height: 20px;
}
.partial-circle.top:before {
  top: 0;
  background: #E19B21;
}
.partial-circle.bottom:before {
  bottom: 0;
  background: #D08707;
}
&#13;
<div class="partial-circle top"></div>
<div class="partial-circle bottom"></div>
&#13;
&#13;
&#13;

答案 2 :(得分:3)

不使用path

的简单方法

<svg version="1.1" width="64" height="64" xmlns="http://www.w3.org/2000/svg">
    <clipPath id="cut-off">
        <rect x="0" y="0" width="64" height="40"/>
    </clipPath>

    <circle cx="32" cy="32" r="32" fill="#d08807"/>
    <circle cx="32" cy="32" r="32" fill="#e19b22" clip-path="url(#cut-off)"/>
</svg>