Je veux colorer l'arrière-plan du svg text
comme background-color
en css
Je n'ai pu trouver de documentation que sur les fill
couleurs du texte lui-même
Est-ce même possible?
css
svg
background-color
Nick Ginanto
la source
la source
Réponses:
Non, ce n'est pas possible, les éléments SVG n'ont pas d'
background-...
attributs de présentation .Pour simuler cet effet, vous pouvez dessiner un rectangle derrière l'attribut de texte avec
fill="green"
ou quelque chose de similaire (filtres). En utilisant JavaScript, vous pouvez effectuer les opérations suivantes:la source
Vous pouvez utiliser un filtre pour générer l'arrière-plan.
la source
operator="xor"
àfeComposite
pour éviter un texte flou. @RobertLongson @teran @paulmelnikow @billLa solution que j'ai utilisée est:
Un élément de texte en double est placé, avec des attributs de trait et de largeur de trait. Le trait doit correspondre à la couleur d'arrière-plan, et la largeur du trait doit être juste assez grande pour créer un "splodge" sur lequel écrire le texte réel.
Un peu de hack et il y a des problèmes potentiels, mais ça marche pour moi!
la source
Non, vous ne pouvez pas ajouter de couleur d'arrière-plan aux éléments SVG. Vous pouvez le faire par programmation avec d3 .
la source
Au lieu d'utiliser une
<text>
balise, la<foreignObject>
balise peut être utilisée, ce qui permet le contenu XHTML avec CSS.la source
Réponse de Robert Longson (@RobertLongson) avec modifications:
et nous n'avons pas de flou et pas de "getBBox" lourd :) Le remplissage est fourni par des espaces blancs dans l'élément de texte avec filtre. Ça a marché pour moi
la source
c'est mon hack préféré (pas sûr que ça marche). Il fait référence à un élément qui n'est pas encore affiché, et cela fonctionne plutôt bien
la source
Vous pouvez combiner le filtre avec le texte.
la source
Pour ceux qui se demandent comment appliquer un remplissage à un élément de texte lorsqu'il a un arrière-plan comme dans la réponse de Robert , procédez comme suit:
Dans l'exemple ci-dessus, les positions x et y du filtre peuvent être utilisées comme le
transform: translate(-10%, -10%)
feraient, et les valeurs de largeur et de hauteur peuvent être lues comme120%
et120%
. Nous avons donc agrandi le fond de 20% et l'avons compensé de -10%, de sorte que le fond est maintenant 10% plus grand de chaque côté du texte.la source
Les réponses précédentes reposaient sur le doublage du texte et manquaient d'espaces blancs suffisants.
En utilisant
atop
et
j'ai pu obtenir les résultats que je voulais.Cet exemple inclut également des flèches, un cas d'utilisation courant pour les étiquettes de texte SVG:
la source
Vous pouvez ajouter du style à votre texte:
Blanc, dans cet exemple. Ne fonctionne pas dans IE :)
la source