SVGで砂時計のアニメーションを作成しました。 これはChromeでうまく動作します& &オペラですが、firefoxにはいくつかの問題があります。SVGのパスアニメーションのデータがFirefoxで動作しない
砂時計を一時停止してから、後で再開することができます。今クロム/オペラでは、私はd
の現在の値を読んで、それを再開時にアニメーション要素に適用することができますが、Firefoxでは属性が更新されていないため、現在の属性値を再開要素に割り当てることができません。
私は試しました: Element.animate()APIを使用していますが、要素の現在の値も変更されていません。 getComputedStyle()メソッドを使用していますが、firefoxはそれをCSSプロパティとして参照していないため、d
の値を取得できません。 svg.html <svg width="200" height="200" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg"> <path d="M 0 0 L 0 200 L 200 200 L 0 0 Z" fill="black" id="myPath"/> </svg>
svg.js
var myPath = document.getElementById('myPath');
var anima = document.createElementNS('http://www.w3.org/2000/svg', 'animate');
anima.setAttributeNS('', 'attributeType', 'XML');
anima.setAttributeNS('', 'attributeName', 'd');
anima.setAttributeNS('', 'values', 'M 0 0 L 0 200 L 200 200 L 0 0 Z; M 0 0 L 100 100 L 200 200 L 0 0 Z');
anima.setAttributeNS('', 'dur', '5s');
anima.setAttributeNS('', 'fill', 'freeze');
myPath.appendChild(anima);
myPath.lastChild.beginElement();
setTimeout(() => {
console.log(myPath.getAttribute('d')); // in chrome gives the current value, in firefox gives the element original value
}, 1500)
質問です:
これはサンプルコードで 1.どのようにFirefoxで現在d
値を取得するには? 2.余分なライブラリがなくても可能ですか?
を作り、これは誰もが
誰もがそれについて何かを知っている必要とされている場所を確認したい場合hourglassのですか?
現在の値を取得するには、mypath.animatedPathSegListを使用します。 https://www.w3.org/TR/SVG11/paths.html#InterfaceSVGPathSegList –
@RobertLongsonそれは私にポイントを与えますが、それはクロムのようにまっすぐではありません。しかし、私はそれを私が必要とするものに加工することができると思います。 – cowCrazy