Я хочу раскрасить фон svg так text
же, как background-color
в css
Мне удалось найти только документацию fill
, которая раскрашивает сам текст
Это вообще возможно?
css
svg
background-color
Ник Гинанто
источник
источник
Ответы:
Нет, это невозможно, элементы SVG не имеют
background-...
атрибутов представления .Чтобы имитировать этот эффект, вы можете нарисовать прямоугольник позади текстового атрибута
fill="green"
или что-то подобное (фильтры). Используя JavaScript, вы можете сделать следующее:источник
Вы можете использовать фильтр для создания фона.
источник
operator="xor"
вfeComposite
предотвратить расплывчатый текст. @RobertLongson @teran @paulmelnikow @billЯ использовал следующее решение:
Размещается повторяющийся текстовый элемент с атрибутами обводки и ширины обводки. Обводка должна соответствовать цвету фона, а ширина обводки должна быть достаточно большой, чтобы создать «пятно», на котором можно написать фактический текст.
Немного взлома и есть потенциальные проблемы, но у меня работает!
источник
Нет, вы не можете добавить цвет фона к элементам SVG. Вы можете сделать это программно с помощью d3 .
источник
Вместо того , чтобы использовать
<text>
тег, то<foreignObject>
можно использовать тег, который позволяет содержимому XHTML с помощью CSS.источник
Ответ Роберта Лонгсона (@RobertLongson) с изменениями:
и у нас нет размытия и тяжелого "getBBox" :) Заполнение обеспечивается пробелами в текстовом элементе с фильтром. Это сработало для меня
источник
это мой любимый хак (не уверен, что он должен работать). Он ссылается на элемент, который еще не отображается, и работает довольно хорошо.
источник
Вы можете комбинировать фильтр с текстом.
источник
Тем, кто задается вопросом, как применить отступы к текстовому элементу, если у него есть фон, как в ответе Роберта , сделайте следующее:
В приведенном выше примере позиции фильтра по x и y можно использовать как обычно
transform: translate(-10%, -10%)
, а значения ширины и высоты можно читать как120%
и120%
. Итак, мы увеличили фон на 20% и сместили его на -10%, так что фон теперь на 10% больше с каждой стороны текста.источник
Предыдущие ответы основывались на удвоении текста и отсутствовали достаточные пробелы.
Используя
atop
и,
я смог получить желаемые результаты.Этот пример также включает стрелки, общий вариант использования текстовых меток SVG:
источник
Вы можете добавить стиль к своему тексту:
Белый, в этом примере. Не работает в IE :)
источник