我不知道在 d3 中执行此操作的本地方式。但是您可以通过扩充 d3 原型轻松修改 d3 选择器 API 以跳过动画:
要动画的 HTML 代码:
<svg width="200" height="200">
<rect x="1" y="1" width="0" height="100" />
</svg>
动画和 D3 增强代码:
function animate(color){
d3.selectAll("rect")
.attr("width", 0).attr("fill", "white")
.transition().duration(1000)
.attr("width", 100).attr("fill", color)
}
function augment(){
// add a duration function to the selection prototype
d3.selection.prototype.duration = function(){ return this }
// hack the transition function of d3's select API
d3.selection.prototype.transition = function(){ return this }
}
animate("red")
console.log("normal animation done")
setTimeout( function(){
augment()
console.log("d3 hacked!")
animate("green")
console.log("animation skipped")
}, 1200 )
注意力!此 hack 可能无法为您提供完整的解决方案。您可能希望使用您在应用程序transition().*
中不可用的其他功能来扩展此解决方案。d3.selection.prototype
您还可以考虑 d3 支持的其他形式的动画。也许还有更多<selection>.transition()
我不知道的。