【发布时间】:2012-11-22 10:01:48
【问题描述】:
我在 SVG 中有一个路径定义了一个 clipPath。线条(刻度线)被绘制并剪裁到路径。
当我对线条进行动画处理时,它们会保留原始剪辑。我希望它们在动画的每个阶段都被“重新剪辑”。
问题:有没有一种简单的方法可以在过渡期间执行剪辑?
示例问题代码: http://jsfiddle.net/Q29TA/
当你点击 svg 时,它会演示动画。
相关sn-ps:
d3.select( "#g-container" )
.selectAll( "line" )
.data( y.ticks( 10 ) )
.enter()
.append( "line" )
.attr( "x1", 0 ).attr( "x2", width )
.attr( "y1", y ).attr( "y2", y )
.attr( "class", "tick-marks" )
.attr( "clip-path", "url(#myclip)" );
d3.select( "svg" )
.on("click", function() {
d3.selectAll(".tick-marks")
.transition().duration( 2500 )
.attr( "transform", "translate(0,30)" )
} )
我对执行此操作的新方法持开放态度,但我无法对重新计算线的 x1 和 x2 的动画进行硬编码,因为 clipPath 可以是任何东西。
显示动画后果的示例图片(我希望水平线与容器的蓝色对角线相交):
【问题讨论】: