我在 SVG 中有一条路径定义了一个 clipPath。线(刻度线)被绘制并剪裁到路径。
当我对线条进行动画处理时,它们会保留原始剪辑。我希望它们在动画的每个阶段都被“重新剪辑”。
问题:有没有一种简单的方法可以在过渡期间执行剪辑?
示例问题代码:http: //jsfiddle.net/Q29TA/
当您单击 svg 时,它会演示动画。
相关片段:
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 可以是任何东西。
显示动画后果的示例图片(我希望水平线与容器的蓝色对角线相交):