Ich möchte den Hintergrund von SVG text
ähnlich wie background-color
in CSS färben
Ich konnte nur Unterlagen zu finden fill
, die den Text selbst färbt
Ist es überhaupt möglich?
css
svg
background-color
Nick Ginanto
quelle
quelle
Antworten:
Nein, das ist nicht möglich. SVG-Elemente haben keine
background-...
Präsentationsattribute .Um diesen Effekt zu simulieren, können Sie ein Rechteck hinter das Textattribut mit
fill="green"
oder etwas Ähnliches (Filter) zeichnen . Mit JavaScript können Sie Folgendes tun:quelle
Sie können einen Filter verwenden, um den Hintergrund zu generieren.
quelle
operator="xor"
zufeComposite
, um unscharfen Text zu vermeiden. @ RobertLongson @teran @ paulmelnikow @billDie Lösung, die ich verwendet habe, ist:
Es wird ein doppeltes Textelement mit Strich- und Strichbreitenattributen platziert. Der Strich sollte mit der Hintergrundfarbe übereinstimmen, und die Strichbreite sollte gerade groß genug sein, um einen "Splodge" zu erstellen, auf den der eigentliche Text geschrieben werden kann.
Ein bisschen wie ein Hack und es gibt potenzielle Probleme, aber funktioniert für mich!
quelle
Nein, Sie können SVG-Elementen keine Hintergrundfarbe hinzufügen. Sie können dies programmgesteuert mit d3 tun .
quelle
Anstelle eines
<text>
Tags kann auch das<foreignObject>
Tag verwendet werden, das XHTML-Inhalte mit CSS ermöglicht.quelle
Antwort von Robert Longson (@RobertLongson) mit Änderungen:
und wir haben keine Unschärfe und keine schwere "getBBox" :) Das Auffüllen erfolgt durch Leerzeichen im Textelement mit Filter. Es hat bei mir funktioniert
quelle
Dies ist mein Lieblings-Hack (nicht sicher, ob es funktionieren sollte). Es verweist auf ein Element, das noch nicht angezeigt wird, und es funktioniert ziemlich gut
quelle
Sie können Filter mit dem Text kombinieren.
quelle
Wenn Sie sich fragen, wie Sie ein Textelement mit einem Hintergrund wie in der Antwort von Robert auffüllen sollen, gehen Sie wie folgt vor:
Im obigen Beispiel können die x- und y- Positionen des Filters wie gewohnt verwendet werden
transform: translate(-10%, -10%)
, und die Werte für Breite und Höhe können als120%
und gelesen werden120%
. Also haben wir den Hintergrund um 20% vergrößert und um -10% versetzt, sodass der Hintergrund jetzt auf jeder Seite des Textes um 10% größer ist.quelle
Die vorherigen Antworten beruhten auf der Verdoppelung des Textes und es fehlte genügend Leerzeichen.
Durch die Verwendung von
atop
und
konnte ich die gewünschten Ergebnisse erzielen.Dieses Beispiel enthält auch Pfeile, ein häufiger Anwendungsfall für SVG-Textbeschriftungen:
quelle
Sie können Ihrem Text Stil hinzufügen:
Weiß in diesem Beispiel. Funktioniert nicht im IE :)
quelle