Me gustaría establecer un color de fondo predeterminado para todo el documento SVG, por ejemplo, en rojo.
<svg viewBox="0 0 500 600" style="background: red">/* content */</svg>
La solución anterior funciona, pero la propiedad de fondo del atributo de estilo desafortunadamente no es estándar: http://www.w3.org/TR/SVG/styling.html#SVGStylingProperties , por lo que se elimina durante el proceso de limpieza con SVG Limpiador.
¿Hay otra forma de declarar este color de fondo?
Respuestas:
SVG 1.2 Tiny tiene relleno de ventana gráfica No estoy seguro de cuán ampliamente implementada está esta propiedad, ya que la mayoría de los navegadores están apuntando a SVG 1.1 en este momento. Opera lo implementa FWIW.
Una solución más cruzada en el navegador sería pegar un
<rect>
elemento con un ancho y una altura del 100% y llenar = "rojo" como el primer<svg>
elemento secundario del elemento, por ejemplo:fuente
width="10000%" height="10000%"
puede solucionarlo. si no, entonces agregue algunos cerosviewport-fill
solicitud de extracción de caniuse abandonada : github.com/Fyrd/caniuse/issues/2186 ¿Por qué, por qué dejaron morir a SVG?Encontré que esto funciona en Safari. SVG solo colorea con color de fondo donde cubre el cuadro delimitador de un elemento. Entonces, dele un borde (trazo) con un límite de cero píxeles. Completa todo para ti con tu color de fondo.
<svg style='stroke-width: 0px; background-color: blue;'> </svg>
fuente
Es la respuesta de @Robert Longson, ahora con código (originalmente no había código, se agregó más tarde):
Esta respuesta usa:
fuente
Permítanme informar una solución muy simple que encontré, que no está escrita en respuestas anteriores. También quería establecer el fondo en un SVG, pero también quiero que esto funcione en un archivo SVG independiente.
Bueno, esta solución es realmente simple, de hecho, SVG admite etiquetas de estilo, por lo que puede hacer algo como
fuente
background-color
del<svg>
elemento hará que el EI11 hacen que el color de fondo también fuera del área definida con elviewBox
atributo. Sin embargo, esto no importa al usarwidth
y losheight
atributos.<svg style"...."></svg>
y<svg><style>...</style></svg>
, suponiendo que la<style>
etiqueta esté en el nivel superior? Si no, entonces esta respuesta parece la solución original del OP, reempaquetada bajo una sintaxis diferente. (¿Pero tal vez esta solución sobrevive a SVG Cleaner, mientras<svg style="..."></svg>
que no?)Actualmente estoy trabajando en un archivo como este:
Y traté de poner esto en
style.css
:Está funcionando en Chromium y Firefox, pero no creo que sea una buena práctica . El visor de imágenes EyeOfGnome no lo procesa, e Inkscape usa un espacio de nombres especial para almacenar dicho fondo:
Bueno, parece que el elemento raíz SVG no es parte de los elementos pintables en las recomendaciones SVG.
Por lo tanto, sugeriría utilizar la solución "rect" proporcionada por Robert Longson porque supongo que no es un simple "hack". Parece ser la forma estándar de establecer un fondo con SVG.
fuente
Otra solución podría ser usar
<div>
el mismo tamaño para envolver el<svg>
. Después de eso, podrás postularte"background-color"
, y"background-image"
eso afectará asvg
.fuente