当 HTML 页面中有 BASE 标签时,SVG 渐变会变黑?
我使用 Raphaël JavaScript 库在 HTML 页面中创建 SVG 元素,并使用 CodeIgniter 作为 PHP 框架。在CodeIgniter框架中,我需要在HTML文档的头部添加一个
标签来使用JS,CSS和图像,但这在SVG元素中引起了一个奇怪的问题。
当我使用
标签时,渐变不起作用。相反,该物体会变黑。它的行为与图像填充路径对象完全相同。
I am using the Raphaël JavaScript Library to create SVG elements in an HTML page and using CodeIgniter as a PHP framework. In the CodeIgniter framework I need to add a <base>
tag in the head of the HTML document to use JS,CSS and images, but it caused a strange problem in the SVG element.
When I use the <base>
tag, gradients do not work. Instead, the object turns black. It behaves exactly the same with image filled path objects.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
SVG 渐变 在文档中使用唯一的
id< 进行定义/code> 属性,然后从另一个元素作为 URL 引用。通常,URL 只是标识符片段,例如:
如果引入带有
href
属性的
元素,则会更改文档中此类 URL 的含义。它们不是相对于当前文档进行计算,而是相对于指定的单独 URI 进行计算。SVG Gradients are defined in the document with a unique
id
attribute, and then referenced from another element as a URL. Typically the URL is just the identifier fragment, e.g.:If you introduce a
<base>
element with anhref
attribute, you change the meaning of such URLs in the document. Instead of being computed relative to the current document, they are computed relative to the specified separate URI.另请参阅以下错误报告:
https://bugzilla.mozilla.org/show_bug.cgi?id=652991
显然,通过 URL 引用(我怀疑也是填充渐变或标记结束)的概念对于也使用 History.pushState() 的 AJAX 样式应用程序来说是有问题的。
see also the following bug report:
https://bugzilla.mozilla.org/show_bug.cgi?id=652991
apparently, the notion of referencing (the fill gradient or marker-end, I suspect, too) by URL is problematic for AJAX-style applications that also use history.pushState().
你的梯度定义正在被破坏
Opera 对于渐变填充对象的某些用法有时也会出现问题
Your gradient definition is getting corrupted
Also there are sometimes problems with Opera for certain usages of gradient filled objects
我遇到了类似的问题 - 渐变在 Chrome 中呈现为全黑,但我什至没有
标签。更改
为
似乎可以解决问题。
另一个不相关的错误是 Chrome 无法解析
元素上的transform="translate(...)"
,我不得不将它们移动到单独的中<路径>-s。
I had a similar issue - gradient is rendered all black in Chrome, but I didn't even have a
<base>
tag.Changing
to
seemed to fix the issue.
Another unrelated bug was Chrome being unable to parse
transform="translate(...)"
on<g>
elements, I had to move them into individual<path>
-s.