Использование clip-path для удаления 37px из 4 строк svg в круге - PullRequest
0 голосов
/ 02 июня 2019

То, что я пытаюсь сделать, это удалить линии SVG в середине круга.

Как бы это сделать, используя clip-path?

Принимая это: https://i.imgur.com/DGX3Yji.png

И обратимся к этому: https://i.imgur.com/gg4XFUq.png

Код: https://jsfiddle.net/5r1dg4hx/3/

https://i.imgur.com/SGzGzaE.png

  <svg class="stack" aria-hidden="true" width="260" height="194" viewbox="0 0 260 194">
    <line stroke="teal" x1="131" y1="40" x2="130" y2="149"></line>
    <line stroke="dodgerblue" x1="91" y1="133" x2="170" y2="58"></line>
    <line stroke="purple" x1="77" y1="95" x2="185" y2="96"></line>
    <line stroke="green" x1="169" y1="135" x2="93" y2="56"></line> 
    <circle class="outer" cx="131" cy="95" r="55"></circle>
    <circle cx="130" cy="95.40" r="20.8"></circle>

1 Ответ

0 голосов
/ 02 июня 2019

Вам понадобится нарисовать путь с отверстием для обтравочного контура:

<path d="M0,0 0,194 260,194 260,0 0,0 
         M150.8, 95.40A20.8, 20.8 0 0 1 109.2 95.40A20.8, 20.8 0 0 1 150.8, 95.40"  /> 

Первая часть пути (M0,0 0,194 260,194 260,0 0,0) рисует прямоугольник размером с холст svg.Вторая часть (M150.8, 95.40A20.8, 20.8 0 0 1 109.2 95.40A20.8, 20.8 0 0 1 150.8, 95.40) рисует круг размером с внутренний круг и в том же положении.

Затем вы оборачиваете линии в группе и обрезаете группу.

svg{border:1px solid;}
circle{fill:none;stroke:black}
<svg class="stack" aria-hidden="true" width="260" height="194" viewbox="0 0 260 194">
  <defs> 
<clipPath id="clip"> 
    <path d="M0,0 0,194 
    260,194 260,0 0,0 M150.8, 95.40A20.8, 20.8 0 0 1 109.2 95.40A20.8, 20.8 0 0 1 150.8, 95.40"  /> 
 </clipPath> 
  </defs>
  <g clip-path="url(#clip)">
    <line stroke="teal" x1="131" y1="40" x2="130" y2="149"></line>
    <line stroke="dodgerblue" x1="91" y1="133" x2="170" y2="58"></line>
    <line stroke="purple" x1="77" y1="95" x2="185" y2="96"></line>
    <line stroke="green" x1="169" y1="135" x2="93" y2="56"></line>
  </g>
    <circle class="outer" cx="131" cy="95" r="55"></circle>
    <circle cx="130" cy="95.40" r="20.8"></circle>

   </svg>
...