Cuando un SVG se incluye directamente en un documento mediante la <svg>
etiqueta, puede aplicar estilos CSS al SVG a través de la hoja de estilo del documento. Sin embargo, estoy tratando de aplicar un estilo a un SVG que está incrustado (usando la <object>
etiqueta).
¿Es posible utilizar algo como el siguiente código?
object svg {
fill: #fff;
}
Respuestas:
Respuesta corta: no, ya que los estilos no se aplican a través de los límites del documento.
Sin embargo, dado que tiene una
<object>
etiqueta, puede insertar la hoja de estilo en el documento svg usando script.Algo como esto, y tenga en cuenta que este código asume que se
<object>
ha cargado completamente:También es posible insertar un
<link>
elemento para hacer referencia a una hoja de estilo externa:Otra opción más es usar el primer método para insertar un elemento de estilo y luego agregar una regla @import, por ejemplo
styleElement.textContent = "@import url(my-style.css)"
.Por supuesto, también puede vincular directamente a la hoja de estilo desde el archivo svg, sin hacer ningún script. Cualquiera de los siguientes debería funcionar:
o:
Actualización 2015: puede usar el complemento jquery-svg para aplicar scripts js y estilos css a un SVG incrustado.
fuente
Puede hacer esto sin javsscrpt colocando un bloque de estilo con sus estilos dentro del archivo SVG.
fuente
Si la única razón para usar la etiqueta para incluir el SVG es que no desea saturar su código fuente con el marcado del SVG, debe echar un vistazo a los inyectores SVG como SVGInject .
La inyección SVG usa Javascript para inyectar un archivo SVG en línea en su documento HTML. Esto permite un código fuente HTML limpio al tiempo que hace que los SVG sean completamente estilizados con CSS. Un ejemplo básico se ve así:
fuente