SVGアニメーション – javascriptを使う(2) – fill要素の動的変化

javascript

SVGアニメーション – javascriptを使う(2) – fill要素の動的変化

SVG要素をjavascriptを使ってアニメーションする方法を試します。

前回の投稿で、アニメーションとして取り扱えるSVGのプロパティを列挙しましたが、
その中から fill を試してみます。

下記のサンプルを用意しました。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>テストHTML</title>

<style>
.line {
    stroke-width: 5;
    stroke: #DEDEDE;
}
</style>

</head>
<body>

<svg xmlns="http://www.w3.org/2000/svg"
    width   = "500"
    height  = "250"
    viewBox = "0 0 500 250"
    style   = "background-color:#fff"
>
    <rect id="recttest" x="10" y="10" width="100" height="100" fill="#000000" />
</svg>

<script>

    let color_value = 0;
    let millisecond = 50;
    let dom_rect    = document.querySelector("#recttest");

    setInterval(() => {

        let r = Math.round(color_value);
        let g = Math.round(color_value);
        let b = Math.round(color_value);

        if (r > 255) {
            color_value = 0;
        }
        color_value += 5;

        let fill_color = "rgb(" + r + "," + g + "," + b + ")";
        dom_rect.setAttribute('fill', fill_color);


    }, millisecond)

</script>

</body>
</html>

サーバ上のHTMLはこちら(test1.html)

画面にアクセスすると開始座標(10,10)、終了座標(100,100)で、SVGのrect要素が出力されます。

また、javascriptによるfill要素の動的変更で、そのrectの色要素(RGBの全要素)が「0→255」までの値で動的に変化します。

millisecond は単純にミリ秒での変化なので、この場合は50ミリ秒でRGBの値を決定しているので、0.05秒の速さで「黒→白」まで変化することがわかります。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です