Мне нужно сделать круглое меню с неизвестным / переменным количеством элементов (я подчеркиваю этот пункт, потому что не заинтересован в статических решениях с 3 или 4 элементами).
Я решилиспользовать SVG.Когда я создаю HTML / SVG с помощью кода на стороне сервера, имея путь SVG, я могу поместить текст в этот путь с помощью startOffset = "@(100/items.Count)%"
.container { width: 300px; }
svg { border: 1px solid; }
a:hover { fill: red; }
<div class="container">
<svg viewBox="0 0 200 200">
<defs>
<desc>The path used for the text</desc>
<path id="c" d="M150,100 A50,50 0 1 1 150,99.99z" />
</defs>
<use xlink:href="#c" stroke="#d9d9d9" fill="none"/>
<text font-size="20" >
<textPath xlink:href="#c" startOffset="33%">
<a xlink:href="https://stackoverflow.com">Our products</a>
</textPath>
</text>
<text font-size="20" text-anchor="middle">
<textPath xlink:href="#c" startOffset="66%">
<a xlink:href="https://stackoverflow.com">Services</a>
</textPath>
</text>
<text font-size="20" text-anchor="end">
<textPath xlink:href="#c" startOffset="99%">
<a xlink:href="https://stackoverflow.com">Achievements</a>
</textPath>
</text>
</svg>
</div>
Мой вопрос: как сделать текст читаемым для пользователя (не быть наложенным, перевернутым, трудно читаемым)?Конкретный вопрос заключается в том, как сделать текст горизонтальным, сохранив его положение / «базовую точку» на пути круга?После этого я буду использовать что-то вроде
.textbox {
max-width: 200px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
PS. Меня больше интересуют простые решения SVG / CSS / HTML, а не сложные библиотеки рисования JS.