D3 はgetComputedStyle
、遷移の開始値を決定するために使用します。残念ながら、getComputedStyle
CSS 変換では、指定した変換文字列ではなく、変換マトリックスが返されます。したがって、逆遷移の開始点は次のようになります。
matrix(0, -1, 1, 0, 0, 0)
(最初の遷移が機能する理由は実際にはわかりません。要素に変換がない場合の変換行列の値は「行列(1、0、0、1、0、0)」であり、どういうわけか文字列補間器はそれを使って何かをしますが、理由はわかりません。)
これを回避するには、いくつかのオプションがあります。
開始点と終了点が明確に定義されている場合 (例のように) 、「回転」文字列として回転の現在の状態に基づいて、既知の開始および終了変換を渡してinterpolateStringを実行するカスタム トゥイーンを作成できます。
「回転」文字列を変換行列に変換し、transition.style
代わりに渡すことができます。CSS 変換に関する MDN の記事では、rotate(angle)
これは[cos(angle) sin(angle) -sin(angle) cos(angle) 0 0]
.
text
要素で SVG を使用するように切り替えることができます。SVG 変換は d3 によってよく理解されており、ほとんどの場合 (例は 1 つです)、特別な処理をしなくても機能します。
これを変更することについて議論が行われている Firefox に関するバグ レポートを見つけましたが、Firefox と WebKit の両方で同じ動作が見られることを考えると、しばらくの間この動作を続けることになると思われます。