Можно ли применить обрезку в SVG без указания идентификатора пути клипа? - PullRequest
11 голосов
/ 11 марта 2011

В моей разметке у меня есть такой кусок:

<svg width="0" height="0" style="display:none" id="dummy-wedge">
 <g class="dummy" transform="translate(100, 100)">
    <defs>
      <clipPath id="clip1">
        <polygon id="clip1Shape" points="-100,-100 0,-100 0,0 -100,-20" />        
      </clipPath>
    </defs>
    <circle id="" cx="0" cy="0" r="52" fill-opacity="0" 
                  stroke="#ffffff" stroke-opacity="0.6" stroke-width="50" 
                  pointer-events="visiblePainted" clip-path="url(#clip1)" />
  </g>
</svg>

Что я хочу сделать, это взять этот кусок и клонировать его в другой корневой элемент SVG, чтобы создать кучу клиньев,каждый с другой позицией и сегментом клипа.Эта часть хороша, но разочарование в том, что каждый клонированный элемент clipPath должен будет получить новый идентификатор, который затем должен быть вставлен в атрибут clip-path соответствующего элемента.

Я знаю, что если вседуги были одинаковой длины, я мог бы иметь общий клип и использовать преобразования поворота, но они не обязательно обязательно одинаковой длины.

Можно ли объявить многоугольник клипа, используя топологическое отношение, а не явно называя его?В качестве альтернативы, есть ли лучший способ определить такую ​​дугу вне использования путей?

Спасибо.

1 Ответ

2 голосов
/ 12 марта 2011

Зачем вам нужно использовать отсечение? Не могли бы вы просто использовать элементы пути с различными сегментами дуги в них?

Нет декларативного (пока) способа получить поведение, за которым вы следите, но это то, для чего предназначена спецификация SVG Parameters . Посмотрите на примеры и реализацию скрипта, предназначенную для обработки контента (как способ поддержки текущих браузеров). ПРИМЕЧАНИЕ. Это все еще рабочий проект, который может быть изменен.

...