【发布时间】:2015-03-15 03:06:20
【问题描述】:
我正在使用 d3.js 动态设置嵌套的 svg,即嵌套在封闭 svg 中的内部 svg。 d3.behavior.zoom() 监听外部 svg 上的缩放事件并进行所需的转换。
除了 Internet Explorer (IE 11) 似乎在涉及内部 svg 的转换方面存在问题外,一切正常。 Firefox 和 Chrome 都按预期将内部 svg 剪切到外部 svg 的视口。然而,在 Internet Explorer 中,放大正确地应用了转换,但似乎忽略了封闭 svg 的尺寸。内层 svg 的内容最终将显示在外层 svg 之外和其他正文元素之上。外部 svg 的视口似乎对内部 svg 没有剪裁效果。
我已经设置了一个 JSFiddle 来展示这种行为。
var zoom = d3.behavior.zoom()
.on("zoom", function () {
container.attr("transform",
"translate(" + d3.event.translate + ") " +
"scale(" + d3.event.scale + ")");
});
var container = d3.select("body")
.append("svg")
.attr("id", "svgcontainer")
.attr("width", 300)
.attr("height", 300)
.style("background-color", "#aaaaee")
.call(zoom)
.append("g");
var svg = container.append("svg")
.attr("width", 200)
.attr("height", 200)
.attr("x", 50)
.attr("y", 50);
svg.append("svg:circle")
.style("fill", "none")
.style("stroke", "red")
.style("stroke-width", "2px")
.attr("cx", 100)
.attr("cy", 100)
.attr("r", 50);
我错过了什么吗?有没有跨浏览器的解决方法?
【问题讨论】:
标签: javascript internet-explorer svg d3.js