Gdy plik SVG jest bezpośrednio zawarty w dokumencie za pomocą <svg>
znacznika, możesz zastosować style CSS do pliku SVG za pośrednictwem arkusza stylów dokumentu. Jednak próbuję zastosować styl do pliku SVG, który jest osadzony (za pomocą <object>
tagu).
Czy można użyć czegoś takiego jak poniższy kod?
object svg {
fill: #fff;
}
Odpowiedzi:
Krótka odpowiedź: nie, ponieważ style nie mają zastosowania poza granicami dokumentu.
Jednakże, ponieważ masz
<object>
tag, możesz wstawić arkusz stylów do dokumentu svg za pomocą skryptu.Coś takiego i zauważ, że ten kod zakłada, że plik
<object>
został w pełni załadowany:Możliwe jest również wstawienie
<link>
elementu odwołującego się do zewnętrznego arkusza stylów:Jeszcze inną opcją jest użycie pierwszej metody, aby wstawić element stylu, a następnie dodać regułę @import, np
styleElement.textContent = "@import url(my-style.css)"
.Oczywiście możesz również bezpośrednio linkować do arkusza stylów z pliku svg, bez wykonywania jakichkolwiek skryptów. Powinno działać jedno z poniższych:
lub:
Aktualizacja 2015: możesz użyć wtyczki jquery-svg do zastosowania skryptów js i stylów css do osadzonego SVG.
źródło
Możesz to zrobić bez javsscrpt, umieszczając blok stylu ze stylami w samym pliku SVG.
źródło
Jeśli jedynym powodem używania znacznika do umieszczania SVG jest to, że nie chcesz zaśmiecać swojego kodu źródłowego znacznikami z SVG, powinieneś przyjrzeć się wtryskiwaczom SVG, takim jak SVGInject .
Wstrzykiwanie SVG wykorzystuje JavaScript do wstawiania pliku SVG w tekście do dokumentu HTML. Pozwala to na czysty kod źródłowy HTML, jednocześnie umożliwiając w pełni stylizowanie SVG za pomocą CSS. Podstawowy przykład wygląda następująco:
źródło