Eu quero usar essa técnica http://css-tricks.com/svg-fallbacks/ e alterar a cor svg, mas até agora não consegui fazer isso. Coloquei isso no CSS, mas minha imagem é sempre preta, não importa o quê. Meu 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>
Respostas:
Você não pode alterar a cor de uma imagem dessa maneira. Se você carregar o SVG como uma imagem, não poderá alterar a forma como ela é exibida usando CSS ou Javascript no navegador.
Se você quer mudar sua imagem SVG, você tem que carregá-lo usando
<object>
,<iframe>
ou usando<svg>
embutido.Se você quiser usar as técnicas da página, precisará da biblioteca Modernizr, onde poderá verificar o suporte ao SVG e exibir condicionalmente ou não uma imagem de fallback. Em seguida, você pode alinhar seu SVG e aplicar os estilos necessários.
Vejo :
Mostrar snippet de código
Você pode alinhar seu SVG, marcar sua imagem de fallback com um nome de classe (
my-svg-alternate
):E no CSS, use a
no-svg
classe Modernizr (CDN: http://ajax.aspnetcdn.com/ajax/modernizr/modernizr-2.7.2.js ) para verificar o suporte ao SVG. Se não houver suporte a SVG, o bloco SVG será ignorado e a imagem será exibida; caso contrário, a imagem será removida da árvore DOM (display: none
):Em seguida, você pode alterar a cor do seu elemento embutido:
fonte
object
SVGs incorporados no documento de hospedagem.Resposta 2020
O filtro CSS funciona em todos os navegadores atuais
Para alterar qualquer cor de SVGs
<img>
tag.Por exemplo, a saída para
#00EE00
éfilter
a esta classe.fonte
brightness(0) saturate(100%)
ao início da lista de filtros primeiro o tornará 100% preto, o que permite que os outros filtros o alterem para a cor correta.Para alterar a cor de qualquer SVG, você pode alterar diretamente o código svg, abrindo o arquivo svg em qualquer editor de texto . O código pode se parecer com o código abaixo
Você pode observar que há algumas tags XML como caminho, círculo, polígono etc . Lá você pode adicionar sua própria cor com a ajuda do atributo style . Veja o exemplo abaixo
Adicione o atributo style a todas as tags para obter o SVG da cor necessária
fonte
fill
como estefill = "#AB7C94"
:? Não sei por que ostyle
atributo é necessárioAdicionada uma página de teste - para colorir SVG através das configurações de filtro:
POR EXEMPLO
filter: invert(0.5) sepia(1) saturate(5) hue-rotate(175deg)
Carregar e colorir seu SVG - Jsfiddle
A ideia foi tirada de: https://blog.union.io/code/2017/08/10/img-svg-fill/
fonte
.custom-disabled > svg {filter:invert(0.2) sepia(1) saturte(0) hue-rotate(0);}
fez exatamente o trabalho necessário para desativar o ícone.Somente SVG com informações de caminho . você não pode fazer isso com a imagem. Como o caminho, você pode alterar o traçado e preencher as informações e pronto. como Illustrator
assim: via CSS, você pode sobrescrever o
fill
valor do caminhomas se você deseja uma maneira mais flexível, como deseja alterá-lo com um texto ao ter algum efeito flutuante, use
fonte
a maneira mais fácil seria criar uma fonte a partir do SVG usando um serviço como https://icomoon.io/app/#/select ou algo semelhante. faça o upload do seu SVG, clique em "gerar fonte", inclua arquivos de fonte e css ao seu lado e use e estilize-o como qualquer outro texto. Eu sempre uso assim porque facilita muito o estilo.
EDIT: Como mencionado no artigo comentado pelas fontes de ícone do @ CodeMouse92, atrapalham os leitores de tela (e possivelmente são ruins para o SEO). Então, fique com os SVGs.
fonte
Você pode alterar a coloração SVG com css se usar alguns truques. Eu escrevi um pequeno roteiro para isso.
o código acima pode não estar funcionando corretamente, eu implementei isso para elementos com uma imagem de fundo svg que funciona quase de maneira semelhante a isso. De qualquer forma, você precisa modificar esse script para se adequar ao seu caso. espero que tenha ajudado.
fonte
A máscara SVG em um elemento de caixa com uma cor de fundo resultará:
Nota - As máscaras SVG não são suportadas nos navegadores Internet Explorer
fonte
Alveje o caminho dentro do svg:
Você pode fazer inline, como:
Ou
fonte
Para simplesmente mudar a cor do svg:
Vá para o arquivo svg e, em estilos, mencione a cor no preenchimento.
fonte
Se você quiser fazer isso com um svg embutido, que é, por exemplo, uma imagem de plano de fundo em seu css:
é claro, substitua o ... pelo seu código de imagem embutido
fonte
Por exemplo, no seu HTML:
Use jQuery:
fonte
Na verdade, existe uma solução muito mais flexível para esse problema: escrever um componente da Web que corrigirá o SVG como texto em tempo de execução. Também publicado em gist com um link para JSFiddle
fonte
maneira mais curta compatível com Bootstrap, sem JavaScript:
e use-o como:
fonte
Abra sua imagem usando um navegador, clique com o botão direito do mouse na imagem, clique na fonte da página de exibição e você verá a tag svg da imagem. Copie e cole em seu html e altere o preenchimento para a cor de sua escolha
fonte
Basta adicionar fill: "selectedColor" na tag svg da imagem: exemplo:
fonte