Mam następujący kod:
<span>
<svg height="32" version="1.1" width="32" xmlns="http://www.w3.org/2000/svg" style="overflow: hidden; position: relative; left: -0.0166626px; top: -0.983337px;">
<desc></desc>
<defs/>
<path style="" fill="#333333" stroke="none" d="M15.985,5.972C8.422,5.972,2.289999999999999,10.049,2.289999999999999,15.078C2.289999999999999,17.955,4.302999999999999...............1,27.68,22.274Z"/>
</svg>
</span>
Czy można zmienić kolor wypełnienia ścieżki SVG za pomocą CSS lub w inny sposób bez zmiany go wewnątrz znacznika ścieżki?
<symbol>
i<use>
. Zobacz tę odpowiedź .Odpowiedzi:
Tak, możesz zastosować CSS do SVG, ale musisz dopasować element, tak jak podczas stylowania HTML. Jeśli chcesz po prostu zastosować go do wszystkich ścieżek SVG, możesz na przykład użyć:
Wygląda na to, że zewnętrzny CSS zastępuje
fill
atrybut ścieżki , przynajmniej w testowanych przeze mnie przeglądarkach WebKit i Gecko. Oczywiście, jeśli napiszesz, powiedzmy,<path style="fill: green">
to również zastąpi zewnętrzny CSS.źródło
<svg>
tag.<use href="external.svg#objId" />
a lokalny CSS będzie nadal obowiązywał do pewnego stopnia.fill: #000;
zamiastbackground: #000;
.jeśli chcesz zmienić kolor przez najechanie kursorem na element, spróbuj tego:
źródło
Jeśli przejdziesz do kodu źródłowego pliku SVG, możesz zmienić wypełnienie kolorem, modyfikując właściwość wypełnienia.
Użyj ulubionego edytora tekstu, otwórz plik SVG i baw się nim.
źródło
umieść ten css dla svg circle.
źródło
Natrafiłem na niesamowity zasób dotyczący sztuczek css: https://css-tricks.com/using-svg/
Wyjaśniono tam kilka rozwiązań.
Wolałem ten, który wymagał minimalnych zmian od źródłowego pliku svg, a także nie wymagał osadzenia go w dokumencie HTML. Ta opcja wykorzystuje
<object>
znacznik.Dodaj plik svg do swojego HTML za pomocą
<object>
; Zadeklarowałem również atrybuty HTMLwidth
iheight
. Korzystając z tych szerokości i wysokości, dokument svg nie jest skalowany, obejrzałem to za pomocątransform: scale(...)
instrukcji css dlasvg
znacznika w moim powiązanym pliku css svg.Utwórz plik css, aby dołączyć do dokumentu SVN. Moja źródłowa ścieżka svg została przeskalowana do 16px, przeskalowałem ją do 64 ze współczynnikiem cztery. Miał tylko jedną ścieżkę, więc nie musiałem jej dokładniej zaznaczać, jednak ścieżka miała atrybut wypełnienia, więc musiałem użyć,
!IMPORTANT
aby wymusić na css precedens.Edytuj docelowy plik SVG przed
<svg
tagiem otwierającym , aby dołączyć arkusz stylów; Zauważ, że href jest względny do adresu URL pliku svg.źródło
Możesz użyć tej składni, ale będzie to wymagać pewnych zmian w pliku SVG. I usuń wszelkie wypełnienia / obrysy z samego SVG.
icon.svg
icon.html
źródło
currentColor
Można zmienić kolor wypełnienia ścieżki w pliku svg. Poniżej znajduje się fragment kodu CSS:
Aby zastosować kolor do całej ścieżki:
svg > path{ fill: red }
Aby ubiegać się o pierwszą ścieżkę d:
svg > path:nth-of-type(1){ fill: green }
Aby ubiegać się o drugą ścieżkę d:
svg > path:nth-of-type(2){ fill: green}
Aby ubiegać się o inną ścieżkę d, zmień tylko numer ścieżki:
svg > path:nth-of-type(${path_number}){ fill: green}
Aby wesprzeć CSS w Angular 2 do 8, użyj koncepcji enkapsulacji:
źródło
Umieść wszystkie swoje pliki SVG:
W Css:
Aby użyć pseudoklas:
Wyjaśnienie
root = strona HTML.
--svgcolor = zmienna.
span.github = wybranie elementu span z klasą github, ikoną svg w środku i przypisaniem pseudoklasy.
źródło