Chcę pokolorować tło svg text
podobnie jak background-color
w css
Udało mi się tylko znaleźć dokumentację fill
, która koloruje sam tekst
Czy to w ogóle możliwe?
css
svg
background-color
Nick Ginanto
źródło
źródło
Odpowiedzi:
Nie, nie jest to możliwe, elementy SVG nie mają
background-...
atrybutów prezentacji .Aby zasymulować ten efekt, możesz narysować prostokąt za atrybutem tekstu za pomocą
fill="green"
lub czegoś podobnego (filtry). Używając JavaScript, możesz wykonać następujące czynności:źródło
Możesz użyć filtra do wygenerowania tła.
źródło
operator="xor"
do,feComposite
aby zapobiec rozmyciu tekstu. @RobertLongson @teran @paulmelnikow @billRozwiązanie, które zastosowałem to:
Umieszczany jest zduplikowany element tekstowy z atrybutami obrysu i szerokości obrysu. Obrys powinien pasować do koloru tła, a jego szerokość powinna być na tyle duża, aby utworzyć „rozdzielenie”, na którym można zapisać rzeczywisty tekst.
Trochę hack i są potencjalne problemy, ale dla mnie działa!
źródło
Nie, nie możesz dodać koloru tła do elementów SVG. Możesz to zrobić programowo za pomocą d3 .
źródło
Zamiast używać
<text>
tagu,<foreignObject>
można użyć tagu, co pozwala na zawartość XHTML z CSS.źródło
Odpowiedź Roberta Longsona (@RobertLongson) z modyfikacjami:
i nie mamy blasku ani ciężkiego "getBBox" :) Wypełnienie zapewniają białe spacje w elemencie tekstowym z filtrem. U mnie to zadziałało
źródło
to mój ulubiony hack (nie jestem pewien, czy powinien działać). Odnosi się do elementu, który nie został jeszcze wyświetlony i działa całkiem nieźle
źródło
Możesz połączyć filtr z tekstem.
źródło
Dla tych, którzy zastanawiają się, jak zastosować dopełnienie do elementu tekstowego, który ma tło, takie jak w odpowiedzi Roberta , wykonaj następujące czynności:
W powyższym przykładzie pozycje x i y filtru mogą być używane bez
transform: translate(-10%, -10%)
zmian, a wartości szerokości i wysokości można odczytywać jako120%
i120%
. Więc zwiększyliśmy tło o 20% i przesunęliśmy je o 10%, więc tło jest teraz o 10% większe z każdej strony tekstu.źródło
Poprzednie odpowiedzi opierały się na podwajaniu tekstu i nie zawierały wystarczającej ilości białych znaków.
Używając
atop
i
byłem w stanie uzyskać pożądane rezultaty.Ten przykład obejmuje również strzałki, typowy przypadek użycia etykiet tekstowych SVG:
źródło
Możesz dodać styl do swojego tekstu:
W tym przykładzie biały. Nie działa w IE :)
źródło