【发布时间】:2014-07-18 08:12:12
【问题描述】:
我有一个 d3.js 动画,它可以在除资源管理器之外的所有其他浏览器中完美运行。想要的效果是让它在它增长和收缩时居中,然后再次循环,无限循环。我做了一个 jsfiddle here。问题是动画离开屏幕并且失去了它在屏幕中间的中心点。
之后,比较 IE11 和 Chrome 中 DOM 中的 svg,我发现 IE11 中的 scale() 只有一个值“scale(x)”,而不是两个“scale(x, y)”。我确定这只是少数问题之一。
var duration = 5000;
var start = 50,
startScale = 1,
endScale = 10,
startTranslate = 225,
endTranslate = 0;
var startTrans = "scale(" + startScale + "," + startScale + ")translate(" + startTranslate + "," + startTranslate + ")",
endTrans = "scale(" + endScale + "," + endScale + ") translate(" + endTranslate + "," + endTranslate + ")";
d3.select("#slider_td").append("input")
.attr("type", "range")
.attr("id", "slider")
.attr("min", 3000)
.attr("max", 7000)
.attr("value", duration)
.on("change", function () {
duration = this.value;
d3.select("#_rb").property("value", d3.round(duration / 1000));
});
var svg = d3.select("#animation_td").append("svg")
.attr("width", 500)
.attr("height", 500)
.style("background-color", "#ADD9F7");
svg.append("use")
.attr("xlink:href", "#Livello_1")
.attr("width", start)
.attr("height", start)
.attr("transform", startTrans)
.call(transition, startTrans, endTrans);
svg.append("circle")
.attr("cx", 250)
.attr("cy", 730)
.attr("r", 350)
.style("fill", "#99CC00")
.style("stroke", "white");
function transition(element, start, end) {
element.transition()
.duration(duration)
.attr("transform", end)
.each("end", function () {
d3.select(this).call(transition, end, start);
});
}
【问题讨论】:
-
IE的版本应该是...
-
版本是 IE 11。其他版本也可能出现这种情况。
-
顺便说一句,我不确定为什么 IE 在 DOM 检查器中显示了转换属性的简化版本,而不是您分配的值,但这似乎并没有影响任何事情 -- @ 987654323@ 的含义与
scale(10)完全相同!
标签: javascript internet-explorer animation svg d3.js