Quando um SVG é incluído diretamente em um documento usando a <svg>
tag, você pode aplicar estilos CSS ao SVG por meio da folha de estilo do documento. No entanto, estou tentando aplicar um estilo a um SVG que está incorporado (usando a <object>
tag).
É possível usar algo como o código a seguir?
object svg {
fill: #fff;
}
Respostas:
Resposta curta: não, pois os estilos não se aplicam aos limites do documento.
No entanto, uma vez que você tem um
<object>
tag, pode inserir a folha de estilo no documento SVG usando o script.Algo parecido com isso, e observe que este código assume que o
<object>
foi totalmente carregado:Também é possível inserir um
<link>
elemento para fazer referência a uma folha de estilo externa:Outra opção é usar o primeiro método, para inserir um elemento de estilo e, em seguida, adicionar uma regra @import, por exemplo
styleElement.textContent = "@import url(my-style.css)"
.Claro que você também pode criar um link direto para a folha de estilo do arquivo svg, sem fazer nenhum script. Qualquer um dos seguintes deve funcionar:
ou:
Atualização 2015: você pode usar o plugin jquery-svg para aplicar scripts js e estilos css a um SVG incorporado.
fonte
Você pode fazer isso sem javsscrpt, colocando um bloco de estilo com seus estilos dentro do próprio arquivo SVG.
fonte
Se a única razão para usar a tag para incluir o SVG é que você não deseja sobrecarregar seu código-fonte com a marcação do SVG, você deve dar uma olhada em injetores SVG como o SVGInject .
A injeção de SVG usa Javascript para injetar um arquivo SVG embutido em seu documento HTML. Isso permite um código-fonte HTML limpo enquanto torna os SVGs totalmente estilizáveis com CSS. Um exemplo básico se parece com este:
fonte