2017-04-07 4 views

Antwort

4

Ja, es ist möglich:

let step =() => { 
 
    let blur = document.querySelector('svg > #blur > feGaussianBlur'); 
 
    let value = parseFloat(blur.getAttribute('stdDeviation')); 
 
    blur.setAttribute('stdDeviation', value * 1.05); 
 
    
 
    requestAnimationFrame(step); 
 
}; 
 

 
requestAnimationFrame(step);
<svg width="250" height="100" 
 
    xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> 
 

 
    <filter id="blur"> 
 
    <feGaussianBlur in="SourceGraphic" stdDeviation="1"/> 
 
    </filter> 
 

 
    <text x="15" y="50" font-size="35" filter="url(#blur)">Hello world!</text> 
 
</svg>

Wahrscheinlich besser CSS oder SMIL Animation zu verwenden, obwohl (SMIL von @kaiido bereitgestellt Snippet):

<svg width="250" height="100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> 
 
    <filter id="blur"> 
 
    <feGaussianBlur in="SourceGraphic" stdDeviation="0"> 
 
     <animate attributeType="XML" attributeName="stdDeviation" from="0" to="5" dur="1s" begin="0s; backward.end + 1s" id="forward" /> 
 
     <animate attributeType="XML" attributeName="stdDeviation" from="5" to="0" dur="1s" begin="forward.end" id="backward" /> 
 
    </feGaussianBlur> 
 
    </filter> 
 

 
    <text x="15" y="50" font-size="35" filter="url(#blur)">Hello world!</text> 
 
</svg>

+1

Sie sollten mindestens eine 'requestAnimationFrame'-Schleife anstelle von setInterval verwenden. Hier ist eine SMIL-Demo: https://jsfiddle.net/x7n7r0Lf/ – Kaiido

+1

@Kaiido Die Frage war: * ist es möglich? * Ich beschränkte mich darauf zu demonstrieren, dass es möglich ist, und bemerkte am Ende meiner Antwort, dass es wahrscheinlich war besser, Animation zu verwenden. Sie sollten Ihre Geige in eine Antwort verwandeln. –

+2

Nein, es wäre dasselbe wie Ihres: "Ja, das ist möglich". Also gebe ich einfach diese * Animation *, über die du in einem Kommentar gesprochen hast, in der Hoffnung, dass sie nützlich ist und lass dich wissen, dass du deine js-Version mit einer 'requestAnimationFrame'-Schleife aktualisieren solltest, da dies die Timing-Funktion ist visuelle Animationen. – Kaiido

Verwandte Themen