Quiero usar esta técnica http://css-tricks.com/svg-fallbacks/ y cambiar el color de svg, pero hasta ahora no he podido hacerlo. Puse esto en el CSS pero mi imagen siempre es negra, pase lo que pase. Mi código:
.change-my-color {
fill: green;
}
<svg>
<image class="change-my-color" xlink:href="https://svgur.com/i/AFM.svg" width="96" height="96" src="ppngfallback.png" />
</svg>
Respuestas:
No puede cambiar el color de una imagen de esa manera. Si carga SVG como imagen, no puede cambiar cómo se muestra usando CSS o Javascript en el navegador.
Si desea cambiar su imagen SVG, lo que tienes que cargarlo usando
<object>
,<iframe>
o el uso<svg>
en línea.Si desea utilizar las técnicas en la página, necesita la biblioteca Modernizr, donde puede verificar la compatibilidad con SVG y mostrar condicionalmente o no una imagen alternativa. Luego puede alinear su SVG y aplicar los estilos que necesita.
Ver :
Mostrar fragmento de código
Puede alinear su SVG, etiquetar su imagen alternativa con un nombre de clase (
my-svg-alternate
):Y en CSS use la
no-svg
clase de Modernizr (CDN: http://ajax.aspnetcdn.com/ajax/modernizr/modernizr-2.7.2.js ) para verificar la compatibilidad con SVG. Si no hay soporte SVG, el bloque SVG se ignorará y se mostrará la imagen; de lo contrario, la imagen se eliminará del árbol DOM (display: none
):Luego puede cambiar el color de su elemento en línea:
fuente
object
diseñar SVG incrustados desde el documento de alojamiento.Respuesta 2020
El filtro CSS funciona en todos los navegadores actuales
Para cambiar cualquier color SVG
<img>
etiqueta.Por ejemplo, la salida para
#00EE00
esfilter
a esta clase.fuente
brightness(0) saturate(100%)
al comienzo de la lista de filtros primero lo convertirá en 100% negro, lo que permite que los otros filtros lo cambien al color correcto.Para cambiar el color de cualquier SVG, puede cambiar directamente el código svg abriendo el archivo svg en cualquier editor de texto . El código puede verse como el siguiente código
Se puede observar que hay algunas etiquetas XML como camino, círculo, polígono, etc . Allí puede agregar su propio color con la ayuda del atributo de estilo . Mira el siguiente ejemplo
Agregue el atributo de estilo a todas las etiquetas para que pueda obtener su SVG del color requerido
fuente
fill
como estefill = "#AB7C94"
:? No estoy seguro de por quéstyle
se necesita el atributoSe agregó una página de prueba para colorear SVG a través de la configuración del filtro:
P.EJ
filter: invert(0.5) sepia(1) saturate(5) hue-rotate(175deg)
Sube y colorea tu SVG - Jsfiddle
Tomó la idea de: https://blog.union.io/code/2017/08/10/img-svg-fill/
fuente
.custom-disabled > svg {filter:invert(0.2) sepia(1) saturte(0) hue-rotate(0);}
hice el trabajo que necesito para deshabilitar el ícono.Solo SVG con información de ruta . no puede hacer eso a la imagen ... como la ruta puede cambiar el trazo y completar la información y ya está. como ilustrador
entonces: a través de CSS puede sobrescribir el
fill
valor de la rutapero si desea una forma más flexible ya que desea cambiarlo con un texto cuando tiene algún efecto flotante ... use
fuente
la forma más fácil sería crear una fuente a partir del SVG utilizando un servicio como https://icomoon.io/app/#/select o similar . cargue su SVG, haga clic en "generar fuente", incluya archivos de fuente y css en su lado y simplemente utilícelo y déle estilo como cualquier otro texto. Siempre lo uso así porque hace que el estilo sea mucho más fácil.
EDITAR: Como se mencionó en el artículo comentado por @ CodeMouse92, las fuentes de iconos alteran los lectores de pantalla (y posiblemente son malas para el SEO). Así que más bien se adhieren a los SVG.
fuente
La máscara SVG en un elemento de cuadro con un color de fondo dará como resultado:
Nota: las máscaras SVG no son compatibles con los navegadores Internet Explorer
fuente
Puede cambiar el color SVG con css si usa algunos trucos. Escribí un pequeño guión para eso.
el código anterior podría no funcionar correctamente, lo he implementado para elementos con una imagen de fondo svg que funciona de manera similar a esto. Pero de todos modos, debe modificar este script para que se ajuste a su caso. Espero que haya ayudado.
fuente
Apunte la ruta dentro del svg:
Puedes hacerlo en línea, como:
O
fuente
Para cambiar simplemente el color de la svg:
Vaya al archivo svg y en estilos, mencione el color de relleno.
fuente
Si desea hacer esto en un svg en línea que es, por ejemplo, una imagen de fondo en su CSS:
por supuesto, reemplace el ... con su código de imagen en línea
fuente
Por ejemplo, en tu HTML:
Use jQuery:
fuente
En realidad, hay una solución bastante más flexible para este problema: escribir un componente web que parcheará SVG como texto en tiempo de ejecución. También publicado en gist con un enlace a JSFiddle
fuente
La forma más corta compatible con Bootstrap, sin JavaScript:
y úsalo como:
fuente
Abra su imagen usando un navegador, haga clic derecho en la imagen, haga clic en ver la fuente de la página y verá la etiqueta svg de la imagen. Copie y pegue en su html, luego cambie el relleno al color de su elección
fuente
Simplemente agregue fill: "desiredColor" en la etiqueta svg de la imagen: ejemplo:
fuente