Quero colocar algumas imagens SVG antes de alguns elementos selecionados. Estou usando jQuery, mas isso é irrelevante.
Eu gostaria de ter o :before
elemento para ser como:
#mydiv:before {
content: '<svg.. code here</svg>';
display: block;
width: 22px;
height: 10px;
margin: 10px 5px 0 10px;
}
Se eu fizer isso como mostrado acima, ele apenas exibirá a string. Verifiquei as especificações e parece haver algumas restrições quanto ao conteúdo. Existe uma solução alternativa para essa restrição? Somente o conteúdo css é relevante para minha pergunta.
Respostas:
Sim você pode! Apenas testei isso e funciona muito bem, isso é incrível! Ainda não funciona com html, mas com svg.
No meu index.html eu tenho:
E meu test.svg fica assim:
fonte
content: url(path/to/my.svg)
. Isso não significa necessariamente que funcionaria com a biblioteca de dicas de interface do usuário do jQuery.content: url(mysprite.svg#my-icon)
não exibirá seu ícone. Eu adoraria ser provado errado, no entanto :)Sim. Você pode adicionar o SVG como imagem de fundo de um vazio: after ou: before. Aqui está:
fonte
background-size
não é suportado no Opera Mini. Isso é tão frustrante.<?xml version="1.0" encoding="utf-8"?>
ao início do meu arquivo svg para fazê-lo funcionar.verifique se o seu svg não contém aspas duplas e uriencode quaisquer # símbolos.
fonte
url('file.svg')
funciona no entanto.xmlns='http://www.w3.org/2000/svg'
a parte <svg> para funcionar no Chrome 66.x. Por exemplo - a pequenacontent:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='24px' height='24px' fill='white'><path d='M7.41,8.58L12,13.17L16.59,8.58L18,10L12,16L6,10L7.41,8.58Z' /></svg>");
Usar sprites CSS e uri de dados oferece benefícios interessantes adicionais, como carregamento rápido e menos solicitações E obtemos suporte para o IE8 usando image / base64:
Exemplo de Codepen usando SVG
HTML
CSS
Para o IE8, mude para isso:
fonte
scale svg
e você vai encontrar muitas outras maneirasFerramenta conveniente para codificação SVG de codificador de URL
fonte
Tenha cuidado, todas as outras respostas têm algum problema no IE.
Vamos ter essa situação - botão com o ícone anexado. Todos os navegadores lidam com isso corretamente, mas o IE pega a largura do elemento e dimensiona o conteúdo anterior para ajustá-lo. JSFiddle
A solução é definir o tamanho como elemento anterior e deixá-lo onde está:
As soluções
background-image
+ tambémbackground-size
funcionam, mas são pouco práticas, pois é necessário especificar os mesmos tamanhos duas vezes.O resultado no IE11:
fonte
Para estender ainda mais este tópico. Caso você queira adicionar ícones do Font Awesome 5, é necessário adicionar um CSS extra.
Os ícones por padrão têm classes
svg-inline--fa
efa-w-*
.Há também aulas modificadoras como
fa-lg
,fa-rotate-*
e outros. Você precisa verificar osvg-with-js.css
arquivo e encontrar o CSS adequado para isso.Você precisa adicionar sua própria cor ao ícone css, caso contrário, ficará preto por padrão, por exemplo,
fill='%23f00'
onde%23
está codificado#
.fonte
fonte