Если вам нужно искать позиции всех элементов между определенными индексами , вы можете указать их:
[i for i,x in enumerate([1,2,3,2]) if x==2 & 2<= i <=3] # -> [3]
Другим способом является создание двух половин кругов и применение противоположного линейного градиента к каждому штриху и убедитесь, что оба они содержатся в элементе g. (В моем примере комбинированный градиент не 270 градусов, а 360. Два полукруга располагаются вертикально. Первый градиент (примененный к штриху верхнего полукруг) будет 100-50% непрозрачности, тогда следующий будет 0 % до 50%. Оба градиента имеют единичный вектор, установленный в x1, y1, y2 = 0 и x2 = 1, заставляя их работать слева направо.) Затем примените transform = rotate (deg, ctrX, ctrY) к g.
Этот тип градиента нелегко достичь в SVG, см. угловой градиент SVG .
Кроме того, transparent
не является допустимым цветом в SVG. Вы должны указать stop-opacity
, как в этом примере: http://jsfiddle.net/WF2CS/
Боюсь, что самым легким решением может быть серия небольших дуговых путей с различной непрозрачностью.
Майк Босток выяснил путь, хотя это непросто: https://bl.ocks.org/mbostock/4163057
В принципе, этот метод использует getPointAtLength
, чтобы разрезать штрих на множество коротких штрихов, укажите интерполированные остановки цвета для каждого, а затем примените градиент к каждому короткому такту между этими остановками.
Удачи, если вы встали на вызов;)
Извините, что здесь так поздно - это может быть полезно кому-то - получить его из https://github.com/ryanallen/articles/blob/master/img/svg/svg-loading-icon .svg
<svg version="1.1" id="svg-loading-1"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
x="0px" y="0px"
viewBox="0 0 80 80"
xml:space="preserve">
<path
id="loading-spinner"
fill="#338833"
d="M 40,72
C 22.4,72,8,57.6,8,40
C 8,22.4,22.4,8,40,8
c 17.6,0,32,14.4,32,32
c 0,1.1-0.9,2-2,2
s -2-0.9-2-2
c 0-15.4-12.6-28-28-28
S 12,24.6,12,40
s 12.6,28,28,28
c 1.1,0,2,0.9,2,2
S 41.1,72,40,72 z"
>
<animateTransform
attributeType="xml"
attributeName="transform"
type="rotate"
from="0 40 40"
to="360 40 40"
dur="1.5s"
repeatCount="indefinite"
/>
</path>
</svg>