是否可以使用javascript和/ css修改背景svg图像?

时间:2014-12-04 22:22:07

标签: javascript css image svg

在我的情况下,我有一个背景图像设置为重复x。我想知道背景图像是否可以是svg,如果是这样,有没有办法通过css或javascript控制它的节点?

我一直在使用SVGInjection来动画插入带有标签的svg图像,但是当svg是背景图像时,我无法找到办法做同样的事情。

2 个答案:

答案 0 :(得分:0)

我的理解是这样的......如果背景图像是从文件中加载而不是嵌入页面中,则可以是SVG。

要通过JS或CSS更改背景,您必须能够访问嵌入版本。

有一种方法可以做到这一点......

body { background-image: 
        url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='10'><linearGradient id='gradient'><stop offset='10%' stop-color='%23F00'/><stop offset='90%' stop-color='%23fcc'/> </linearGradient><rect fill='url(%23gradient)' x='0' y='0' width='100%' height='100%'/></svg>");
      }

...基本上,URL是嵌入了SVG的字符串。您需要创建一个函数来重建并在每次重建时进行更改。

答案 1 :(得分:0)

您可以将其嵌入为背景图片,只要SVG保存在文件系统中的单独文件中编辑:或其他人)已经指出,作为数据网址的一些变体并以与任何其他图像格式相同的方式引用。但SVG并非真正的图片格式,而是XML / script混合图片。

所以 - 不,它不可能控制它的节点,,这是一件非常好的事情。

基本上,您无法修改未嵌入页面的任何SVG(除非它嵌入到另一个页面中,而该页面会嵌入您的页面中,前提是它是同一个域名),如果您可以打开允许该文件类型为大规模XSS安全漏洞的任何域,因为SVG规范允许嵌入script标记。

  1. img
  2. image
  3. background-image
  4. content(对于伪)