@tvsjke
информация засекречена

Как отрисовать многострочный текст svg?

Нужно сделать вот такое:

c8da6f4ecc4f4f3094819c581c292826.jpg

Ну и при наведении еще некоторая логика.

Сделал вот что codepen.io/tvsjke/pen/zNyyYW, и застропорился на некоторых моментах.

1. Как лучше сделать многострочный текст над каждым кругом ? Пробовал решение с tspan, но что-то мне не очень нравится. Может, вообще не через svg ?

2. Как отрисовать дугу для круппы кругов ? К чему привязываться ?

С svg вот только начал знакомиться, сильно не пинайте. Буду благодарен за любые советы.
  • Вопрос задан
  • 3907 просмотров
Пригласить эксперта
Ответы на вопрос 3
sergiks
@sergiks Куратор тега JavaScript
♬♬
В SVG можно вставить foreignObject – в частности, html, где перенос строк решается просто.

Если вы новичок в SVG, для скорейшего получения результата лучше воспользоваться библиотекой, например, D3js. Вот пример, как вставлять в SVG кусок HTML контента в D3js. И другой подход – пример автоматической генерации SVG-элементов под каждую строку текста.

В вашем случае, как я понял, график не динамический, раз нарисовали и забыли. В таком случае можно поручить отрисовать его в векторе вашему дизайнеру, и вывести статичный SVG код. Вы с ним легко разберётесь и навесите логику при наведении. Например, Adobe Illustrator умеет экспортировать графику в SVG.

Кроме того, раз лейблы статичные, можно просто отрисовать по одному элементу <text> на каждую из строк.
Ответ написан
Комментировать
@YAZART
Посмотрите в сторону d3 например. https://d3js.org/
Ответ написан
Комментировать
AndrewHaze
@AndrewHaze
Умею гуглить яндексом
Дугу можно так нарисовать
<![CDATA[
    .str0 {stroke:#2B2A29;stroke-width:1.19176}
    .fil1 {fill:none}
]]>

<path class="fil1 str0" d="M429 191c-40,71 -117,115 -200,115 -126,0 -228,-98 -228,-220 0,-4 0,-8 0,-12"/>


Или рисуйте круг и кладите его под серую плашку

P.S. Можно воспользоваться векторным редактором
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы