Я пытаюсь сделать что-то, что должно быть простым: отобразить слово (элемент SVG text
), в котором каждый символ имеет свой цвет.Я сделал это программно: я разбил строку на символы и вставил каждый символ в элемент tspan
, каждый из которых находится внутри элемента text
.Я использовал атрибут textLength
для пробелов.
Я пробовал так много перестановок, но не могу найти решение, которое работает во всех браузерах.
Вот некоторый код (только SVG).Три примера, просто чтобы показать, как ведут себя разные браузеры.Третий это то, что я хочу.Он работает в Chrome, но любой другой браузер представляет его по-другому:
<svg width = "250px" height = "100px">
<style>
text {
font-size: 30px;
font-family: sans-serif;
font-weight: bold;
}
</style>
// A regular text element:
<text y = "30px" textLength = "250px" fill = "hsl(120, 100%, 10%)">
greengradient
</text>
// A text element with tspan elements:
<text y = "60px">
<tspan textLength = "250px" fill = "hsl(120, 100%, 70%)">green</tspan>
<tspan textLength = "250px" fill = "hsl(120, 100%, 10%)">gradient</tspan>
</text>
// A text element with a tspan element for every character:
<text y = "90px">
<tspan textLength = "250px" fill = "hsl(120, 100%, 70%")>g</tspan>
<tspan textLength = "250px" fill = "hsl(120, 100%, 65%")>r</tspan>
<tspan textLength = "250px" fill = "hsl(120, 100%, 60%")>e</tspan>
<tspan textLength = "250px" fill = "hsl(120, 100%, 55%")>e</tspan>
<tspan textLength = "250px" fill = "hsl(120, 100%, 50%")>n</tspan>
<tspan textLength = "250px" fill = "hsl(120, 100%, 45%")>g</tspan>
<tspan textLength = "250px" fill = "hsl(120, 100%, 40%")>r</tspan>
<tspan textLength = "250px" fill = "hsl(120, 100%, 35%")>a</tspan>
<tspan textLength = "250px" fill = "hsl(120, 100%, 30%")>d</tspan>
<tspan textLength = "250px" fill = "hsl(120, 100%, 25%")>i</tspan>
<tspan textLength = "250px" fill = "hsl(120, 100%, 20%")>e</tspan>
<tspan textLength = "250px" fill = "hsl(120, 100%, 15%")>n</tspan>
<tspan textLength = "250px" fill = "hsl(120, 100%, 10%")>t</tspan>
</text>
</svg>
Существует ли согласованный с браузером способ применения textLength
к встроенным tspan
элементам?