如何在CSS中制作一个内部带有透明水平线的响应圆圈?

时间:2017-12-29 15:40:07

标签: css css3

我不知道这是否只有css才有可能。我想用透明水平线做一个圆圈,你可以改变每条线的大小和位置。像这样的png图片:

enter image description here

到目前为止我做到了这一点,但它没有响应它内部没有透明线,但你可以自由移动所有线。



.enjoy-css {
  box-sizing: content-box;
  width: 300px;
  height: 300px;
  position: absolute;
  border: none;
  border-radius: 150px;
  background: linear-gradient(white, white), linear-gradient(white, white), linear-gradient(white, white), linear-gradient(white, white), linear-gradient(white, white)black;
  background-repeat: no-repeat;
  background-position: 90% 90%, 55% 75%, 90% 10%, 95% 30%, 90%;
  background-origin: padding-box;
  background-size: 124px 20px, 153px 20px, 124px 20px, 153px 20px, 80px 20px;
}

<div class="enjoy-css">
  <span></span>
</div>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:1)

您可以使用svg创建如下的响应形状。

首先,您必须在svg svg标记内创建形状的<symbol>,以便稍后使用。

然后创建一个包含类enjoy-css的div,然后使用svg使用<use>。不要忘记width="100%"<svg>用于响应目的

&#13;
&#13;
svg.defs-only {
  display: block;
  position: absolute;
  height: 0;
  width: 0;
  margin: 0;
  padding: 0;
  border: none;
  overflow: hidden;
}

body {
  background: gold;
}

.enjoy-css {
  max-width: 400px;
}
&#13;
<svg class="defs-only" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="400px" height="400px">
<symbol id="potofgold" >
<path fill-rule="evenodd"  fill="rgb(0, 0, 0)"
 d="M387.395,270.000 L154.000,270.000 L154.000,298.000 L374.370,298.000 C368.372,308.648 361.409,318.675 353.632,328.000 L103.000,328.000 L103.000,356.000 L325.121,356.000 C290.863,383.519 247.363,400.000 200.000,400.000 C89.543,400.000 0.000,310.457 0.000,200.000 C0.000,177.987 3.567,156.809 10.136,137.000 L263.000,137.000 L263.000,109.000 L21.855,109.000 C28.645,95.734 36.895,83.344 46.356,72.000 L238.000,72.000 L238.000,44.000 L74.879,44.000 C109.140,16.485 152.638,0.000 200.000,0.000 C310.457,0.000 400.000,89.543 400.000,200.000 C400.000,224.628 395.538,248.212 387.395,270.000 ZM326.000,187.000 L63.000,187.000 L63.000,215.000 L326.000,215.000 L326.000,187.000 Z"/>
</symbol>
</svg>

<div class="enjoy-css"><svg viewBox="0 0 400 400" width="100%"><use xlink:href="#potofgold"/></svg></div>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

就是这样:

body {
  background: #aaa;
  background: url(http://www.lorempixel.com/600/600/abstract); /* background to show transparency */
}
.circle {
  max-width: 20em; /* Set the max diameter */
  margin: 0 auto;
}
.circle span {
  position: relative;
  display: block;
  padding-bottom: 100%;
}
.circle span::after {
  content: "";
  display: block;
  position: absolute;
  width: 100%;
  top: 0;
  bottom: 0;
  border-radius: 50%;
  background-image: linear-gradient(
      black 10%,
      transparent 10%,
      transparent 18%,
      black 18%,
      black 28%,
      transparent 28%,
      transparent 36%,
      black 36%,
      black 45%,
      transparent 45%,
      transparent 55%,
      black 55%,
      black 64%,
      transparent 64%,
      transparent 72%,
      black 72%,
      black 82%,
      transparent 82%,
      transparent 90%,
      black 90%
    ),
    linear-gradient(to right, transparent 60%, black 60%),
    linear-gradient(to right, transparent 70%, black 70%),
    linear-gradient(
      to right,
      black 15%,
      transparent 15%,
      transparent 85%,
      black 85%
    ),
    linear-gradient(to left, transparent 60%, black 60%),
    linear-gradient(to left, transparent 70%, black 70%);
  background-size: 100%, 100% 20%, 100% 40%, 100% 20%, 100% 20%, 100% 20%;
  background-position: top, top, top, 40%, 0 70%, 0 90%;
  background-repeat: no-repeat;
}
<!DOCTYPE html>
<html>
<body>
<div class="circle">
  <span></span>
</div>
</body>
</html>