Проблема заключается в том, как браузер (Chrome, Safary или другие на том же движке) отображает SVG с border-radius:50%
.Обрезать его круговой маской не помогает.
Одно из решений состоит в том, чтобы изображение выглядело одинаково, не обрезая (не маскируя) его с помощью border-radius
, чтобы он выглядел круглым.Для этого потребуется радиус обводных кругов и ширина обводки для цветных сегментов:
<circle
r="15" <--
cx="16"
cy="16"
fill="none"
stroke="#3FC364"
stroke-dasharray="100 100"
></circle>
circle {
fill: transparent;
stroke-width: 2; <--
}
И создание круга прогресса, чтобы поместиться в нужный круг графика:
<circle
r="8" <--
cx="16"
cy="16"
class="circle--progress"
stroke-dasharray="100 100"
></circle>
.circle--progress {
fill: transparent;
stroke: #C4C4C4;
stroke-width: 16; <-- 8 radius + 8 half stroke width= 16 visible radius
stroke-opacity: .25;
}
См. Полный пример: https://codepen.io/anon/pen/zeogLV
Если необходимо border-radius
, чтобы изображение лучше сочеталось с фоном - оберните его в div и примените border-radius
к div.
См. Пример https://codepen.io/anon/pen/exgOvm?editors=1100
Я изменил фон тела, чтобы обрезка была более четкой.