SVG로 모래 시계 애니메이션을 만들었습니다. 크롬에서 잘 작동합니다 & & 오페라이지만 firefox에는 몇 가지 문제가 있습니다.SVG 경로 애니메이션 액세스 데이터가 파이어 폭스에서 작동하지 않습니다.
모래 시계가 일시 중지되었다가 나중에 다시 시작될 수 있습니다. 이제 크롬/오페라에서 나는 d
의 현재 값을 읽고 이력서의 애니메이션 요소에 적용 할 수 있지만 firefox에서는 속성이 업데이트되지 않으므로 현재 속성 값을 재개 된 요소에 할당 할 수 없습니다. .
시도 : Element.animate() API를 사용하지만 요소의 현재 값을 변경하지 않습니다. getComputedStyle() 메서드를 사용하지만 파이어 폭스가 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. 어떻게 파이어 폭스에서 현재 d
값을 얻는 방법? 2. 추가 라이브러리 없이도 가능합니까?
를 만든 사람이이
필요한 사람이 그것에 대해 뭔가를 알고있는 위치를보고 싶어하면 이것은 hourglass입니까?
mypath.animatedPathSegList를 사용하여 현재 값을 가져옵니다. https://www.w3.org/TR/SVG11/paths.html#InterfaceSVGPathSegList –
@RobertLongson 그것은 크롬에있는 것처럼 앞으로 똑바로 아니지만 그것은 나에게 포인트를 제공합니다. 그러나 나는 내가 필요한 것에 그것을 처리 할 수 있다고 생각한다. – cowCrazy