Gostaria de definir uma cor de plano de fundo padrão para todo o documento SVG, para vermelho, por exemplo.
<svg viewBox="0 0 500 600" style="background: red">/* content */</svg>
A solução acima funciona, mas infelizmente a propriedade background do atributo style não é padrão: http://www.w3.org/TR/SVG/styling.html#SVGStylingProperties e, portanto, é removida durante o processo de limpeza com SVG Limpador.
Existe outra maneira de declarar essa cor de fundo?
Respostas:
SVG 1.2 O Tiny possui preenchimento de janela Não tenho certeza de quão amplamente implementada essa propriedade é, pois a maioria dos navegadores está segmentando o SVG 1.1 no momento. Opera implementa FWIW.
Uma solução mais entre navegadores atualmente seria colar um
<rect>
elemento com largura e altura de 100% e preencher = "vermelho" como o primeiro filho do<svg>
elemento, por exemplo:fonte
width="10000%" height="10000%"
poderá corrigi-la. se não, então adicionar alguns zerosviewport-fill
solicitação de recebimento de caniuse abandonada : github.com/Fyrd/caniuse/issues/2186 Por que por que eles deixaram o SVG morrer?Encontrado isso funciona no Safari. O SVG apenas colore com cor de fundo onde a caixa delimitadora de um elemento cobre. Portanto, atribua uma borda (traço) com um limite de zero pixel. Ele preenche tudo para você com sua cor de fundo.
<svg style='stroke-width: 0px; background-color: blue;'> </svg>
fonte
É a resposta de @Robert Longson, agora com código (originalmente não havia código, foi adicionado posteriormente):
Esta resposta usa:
fonte
Deixe-me relatar uma solução muito simples que encontrei, que não está escrita nas respostas anteriores. Eu também queria definir o plano de fundo em um SVG, mas também quero que isso funcione em um arquivo SVG independente.
Bem, essa solução é realmente simples, na verdade o SVG suporta tags de estilo, para que você possa fazer algo como
fonte
background-color
do<svg>
elemento fará com que o IE11 tornar a cor de fundo também fora da área definida com oviewBox
atributo. Isso não importa ao usarwidth
eheight
atributos.<svg style"...."></svg>
e<svg><style>...</style></svg>
, supondo que a<style>
tag esteja no nível superior? Caso contrário, essa resposta parecerá a solução original do OP, reembalada sob uma sintaxe diferente. (Mas talvez esta solução sobrevive SVG Cleaner, enquanto<svg style="..."></svg>
não?)Atualmente, estou trabalhando em um arquivo como este:
E eu tentei colocar isso em
style.css
:Está funcionando no Chromium e Firefox, mas não acho que seja uma boa prática . O visualizador de imagens EyeOfGnome não a processa e o Inkscape usa um espaço para nome especial para armazenar um plano de fundo:
Bem, parece que o elemento raiz SVG não faz parte dos elementos pintáveis nas recommandações SVG.
Então, eu sugiro usar a solução "correta" fornecida por Robert Longson, porque acho que não é um simples "hack". Parece ser a maneira padrão de definir um plano de fundo com o SVG.
fonte
Outra solução alternativa pode ser usar
<div>
o mesmo tamanho para quebrar o<svg>
. Depois disso, você poderá se inscrever"background-color"
e"background-image"
isso afetará osvg
.fonte