javascript - SVG 可以渲染,但仅在 Firefox 中被切断 - 为什么?

标签 javascript firefox svg cross-browser d3.js

我正在使用 d3js(它使用 SVG)来创建图表。请在 www.uscfstats.com/deltas 上查看(使用 12842311 作为输入值;现在它已经被黑客攻击得很厉害了)。

在 Chrome、Safari 和 Firefox 10 上,这会按预期呈现完整图表,占据整个白框。然而,在更高版本的 Firefox 上(具体来说,15),SVG 渲染的前 200 像素左右,但其余部分会被切断。

当我在 Firebug 中打开页面时,我可以突出显示 HTML 元素,看起来它们都在那里,就好像某个大白框覆盖了我的图表底部 75%(没有但任何此类 HTML 元素)。我在这些点上有点击事件,并且我可以点击那些渲染的事件,但是我可以找到那些不是的事件,但点击它们不会执行任何操作。

我通过编写解决了问题

var svg = d3.select("#scatterplot").append("svg").attr("宽度", "100%").attr("高度", "100%");

为什么会起作用以及发生了什么?

最佳答案

所发生的事情是,关于 svg 大小调整应该如何工作的规范得到了澄清,因此它在各种情况下都能更好地工作,并且 Firefox 也进行了更新以跟踪更新的规范。特别是<svg>现在大小与其他 CSS 替换元素相同,而不是尝试在各种情况下都会失败的自动魔法。

特别是,过去缺乏宽度和高度属性被视为相当于将它们都设置为 100%,只不过它与在 CSS 中实际设置宽度或高度并没有真正发挥作用,并且还有一些其他问题。所以现在,行为是,如果您设置宽度和高度,它们将被视为表示提示(就像 <img> 的宽度和高度属性),如果您不设置,您将获得默认的 300x150 内在尺寸,然后您可以使用它覆盖根据需要设置样式规则。

关于javascript - SVG 可以渲染,但仅在 Firefox 中被切断 - 为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12830897/

相关文章:

javascript - 滚动标题

php - 在页面上对齐这些元素的最佳方法是什么?

ruby-on-rails - 是否可以让 capybara /webdriver 最小化/不聚焦启动 Firefox?

canvas - 需要加速我的 SVG。我可以转换为 WebGL 或 Canvas 吗?

javascript - 取消 iframe 中具有目标 ="_parent"属性的链接事件

javascript - 禁用表单密码自动完成但不禁用其他字段

javascript - 使用 crossOrigin 属性加载图像。在 Firefox 插件 sdk 中

css - 带有三 Angular 形的纯CSS气泡:Firefox无缘无故地渲染难看的1px边框?

css - 悬停时的 SVG 摇动动画

css - 复杂 SVG 中的外部阴影 [jVectorMap Countries]