SVG根元素的默认背景颜色

我想为整个SVG文档设置一个默认的背景颜色,例如红色。

<svg viewBox="0 0 500 600" style="background: red">/* content */</svg> 

上面的解决scheme工作,但不幸的是风格属性的背景属性不是一个标准的: http : //www.w3.org/TR/SVG/styling.html#SVGStylingProperties ,所以它在清理过程中被删除与SVG清洁器。

有没有另外一种方法来声明这种背景颜色?

SVG 1.2 Tiny具有视口填充我不确定这个属性有多广泛的实现,虽然目前大多数浏览器都是针对SVG 1.1的。 Opera实现它FWIW。

当前更多的跨浏览器的解决scheme是将宽度和高度均为100%的<rect>元素和fill =“red”作为<svg>元素的第一个子元素

在Safari中find了这个工程。 SVG只在背景色中用元素的边界框覆盖。 所以,给它一个零像素边界的边界(中风)。 它用你的背景色为你填充整个事物。

<svg style='stroke-width: 0px; background-color: blue;'> </svg>

我目前正在处理这样一个文件:

 <?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml-stylesheet type="text/css" href="style.css" ?> <svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="100%" height="100%" viewBox="0 0 600 600"> ... 

我试图把它放到style.css

 svg { background: #bf1f1f; } 

正在使用Chromium和Firefox,但我认为这不是一个好的做法 。 EyeOfGnome图像查看器不会渲染它,Inkscape使用特殊的命名空间来存储这样的背景:

 <?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" version="1.1" ... <sodipodi:namedview pagecolor="#480000" ... > 

那么,SVG根元素似乎不是SVG推荐中可绘制元素的一部分。

所以我build议使用Robert Longson提供的“rect”解决scheme,因为我猜这不是一个简单的“黑客”。 这似乎是用SVG设置背景的标准方法

另一个解决方法可能是使用相同大小的<div>来包装<svg> 。 之后,您将能够应用将影响svg "background-color""background-image"

 <div class="background"> <svg></svg> </div> <style type="text/css"> .background{ background-color: black; /*background-image: */ } </style> 

这是@Robert Longson的答案,现在用代码:

 <?xml version="1.0" encoding="UTF-8"?> <svg version="1.1" xmlns="http://www.w3.org/2000/svg"> <rect width="100%" height="100%" fill="red"/> </svg>