SVGテキストを動的に歪めることは可能ですか?SVGテキストを動的に歪めることは可能ですか?
たとえば、いくつかの時間的データに基づいてシフトパラメータを適用してfiltersを適用できますか?
ありがとうございました。
SVGテキストを動的に歪めることは可能ですか?SVGテキストを動的に歪めることは可能ですか?
たとえば、いくつかの時間的データに基づいてシフトパラメータを適用してfiltersを適用できますか?
ありがとうございました。
はい、それは可能です:おそらく
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>
しかしCSSやSMILアニメーション(@kaiidoが提供するSMILスニペット)を使用してよりよい:
<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>
少なくとも、このsetIntervalの代わりに 'requestAnimationFrame'ループを使用するべきです。ここにSMILのデモがあります:https://jsfiddle.net/x7n7r0Lf/ – Kaiido
@Kaiido質問がありました:*それは可能ですか?*私はそれが可能であることを実証することに専念し、答えの最後にはおそらくアニメーションを使う方が良いあなたはフィドルを答えにするべきです。 –
いいえ、それはあなたのものと同じでしょう: "そうです"。ですから、あなたがコメントしたこのアニメーションを役に立つだけでなく、 'requestAnimationFrame'ループでjsバージョンを更新する必要があることを知らせます視覚アニメーション。 – Kaiido
はい、可能ですが、より有用な答えを得るために、あなたがしていることをよりよく説明しなければなりません。 – 4castle