Самое главное, насколько точно вы хотите получить. Если мы говорим о ширине штриха всего в один или два пикселя, это не будет иметь большого значения, но в примере ниже можно увидеть различия в деталях.
Радиусы границ не совпадают по всем углам, и изменение цвета не происходит в нужном месте. Углы области заполнения не закруглены; для этого вам действительно нужно нарисовать сегменты траектории дуги.
Если у вас есть несколько непересекающихся путей, вы можете сгруппировать их в элемент <g>
и затем ссылаться только на эту одну группу в элементах <use>
.
path {
fill: blue;
}
use.upper {
stroke: red;
stroke-width: 40;
stroke-linejoin: round;
}
use.lower {
stroke: green;
stroke-width: 20;
stroke-linejoin: round;
}
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
width="300" height="250">
<use class="upper" xlink:href="#path1" />
<use class="lower" xlink:href="#path1" x="10" y="10" />
<path id="path1" d="M60,60 H160 V120 H240 V200 H60 Z" />
</svg>
Для всего, что касается точности, вам может потребоваться вычислить формы, которые вы хотите получить, в вашем коде Javascript.
Может показаться заманчивым посмотреть на эффекты фильтра , но, опять же, разноцветным эффектам границы будет не хватать точности. Для размытых эффектов падающей тени они являются отличным выбором, но для четко определенных границ их производительность хуже, чем у этой техники с <use>
элементами.