当HTML页面中有BASE标记时,SVG Gradient变黑?

Ahm*_*rim 26 javascript model-view-controller svg canvas raphael

我使用RaphaëlJavaScript库在HTML页面中创建SVG元素,并使用CodeIgniter作为PHP框架.在CodeIgniter框架中,我需要<base>在HTML文档的头部添加一个标签来使用JS,CSS和图像,但它在SVG元素中引起了一个奇怪的问题.

当我使用<base>标签时,渐变不起作用.相反,该对象变黑.它与图像填充的路径对象的行为完全相同.

这里有一个示例渐变脚本.

Phr*_*ogz 14

SVG Gradients在文档中定义,具有唯一id属性,然后从另一个元素作为URL引用.通常,URL只是标识符片段,例如:

<defs>
  <linearGradient id="foo" ...>...</linearGradient>
</defs>
<rect fill="url(#foo)" ... />
Run Code Online (Sandbox Code Playgroud)

如果引入<base>具有href属性的元素,则可以更改文档中此类URL的含义.它们不是相对于当前文档计算的,而是相对于指定的单独URI计算的.

  • 有什么解决方案可以从基础标签中排除svg (3认同)
  • 无论如何我要接受你的答案,但如果你知道一种方法来防止这个问题而不删除基本标记,请告诉我 (3认同)
  • 使用完整的URL不起作用,因为它会退出并读取文件,而不是使用DOM中当前构成的(修改后的)文档。确实需要有一种方法可以将SVG与HTML`base`标签分开。 (2认同)
  • 如果您正在使用AngularJS,由于这个问题,他们添加了一个选项来消除对`<base>`的需求:https://github.com/angular/angular.js/issues/8934#issuecomment- 56568466 (2认同)