ClipPathを定義するSVGのパスがあります。線(目盛り)が描画され、パスにクリップされます。
線のアニメーションを実行すると、元のクリッピングが保持されます。アニメーションの各段階で「再クリップ」してほしい。
質問:移行中にクリッピングを実行する簡単な方法はありますか?
問題コードの例: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)" )
} )
私はこれを行うための新しい方法を受け入れていますが、clipPathは何でもかまいませんので、行のx1とx2を再計算するアニメーションをハードコーディングすることはできません。
アニメーションの余波を示すサンプル画像(水平線をコンテナの青い対角線に合わせたい):