SVGについて – グラデーションについて(その2)

javascript

SVGについて – グラデーションについて(その2)

線形グラデーションの透明度について

前回のサンプルに対して、パラメータを調整してみます。

下記の箇所で、グラデーションの開始位置と、色情報を指定していますが、

    <linearGradient
        id = "grad1"
        x1 = "0"
        y1 = "0"
        x2 = "1"
        y2 = "0"
    >
	    <stop offset="0%"   stop-color="#000000" />
	    <stop offset="100%" stop-color="#ffffff" />
    </linearGradient>

このパラメータの最初の色情報と、最後の色情報に対して、透明度を追加します。

    <linearGradient
        id = "grad1"
        x1 = "0"
        y1 = "0"
        x2 = "1"
        y2 = "0"
    >
	    <stop offset="0%"   stop-color="#000000" stop-opacity="0.2" />
	    <stop offset="100%" stop-color="#ffffff" stop-opacity="0.5" />
    </linearGradient>

全体は下記です。

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

<svg width="200" height="200" viewBox="0 0 200 200">

    <linearGradient
        id = "grad1"
        x1 = "0"
        y1 = "0"
        x2 = "1"
        y2 = "0"
    >
	    <stop offset="0%"   stop-color="#000000" stop-opacity="0.2" />
	    <stop offset="100%" stop-color="#ffffff" stop-opacity="0.5" />
    </linearGradient>

    <rect
        x            = "0"
        y            = "0"
        stroke       = "#cccccc"
        stroke-width = "1"
        width        = "150"
        height       = "150"
        fill         = "url(#grad1)"
    />

</svg>

</body>
</html>

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

画面にアクセスすると、

stop-opacity

で、指定した値で色の透明度が決まります。

上記のサンプルの値を少し変えて比較してみます。

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

<svg width="200" height="200" viewBox="0 0 200 200">

    <linearGradient
        id = "grad1"
        x1 = "0"
        y1 = "0"
        x2 = "1"
        y2 = "0"
    >
	    <stop offset="0%"   stop-color="#000000" stop-opacity="0.7" />
	    <stop offset="100%" stop-color="#ffffff" stop-opacity="0.8" />
    </linearGradient>

    <rect
        x            = "0"
        y            = "0"
        stroke       = "#cccccc"
        stroke-width = "1"
        width        = "150"
        height       = "150"
        fill         = "url(#grad1)"
    />

</svg>

</body>
</html>

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

画面にアクセスすると、最初に書いたサンプルより、濃い配色でSVGが出力されることがわかります。
stop-opacityの値が1に近づくほど、透明度は元の色に近くなります。

線形グラデーションの方向指定

linearGradient 要素に対して、x1, x2, y1, y2 の指定で、グラデーションの方向を決定できます。

先程のサンプルの、下記の箇所

    <linearGradient
        id = "grad1"
        x1 = "0"
        y1 = "0"
        x2 = "1"
        y2 = "0"
    >

を、以下に変更します。

    <linearGradient
        id = "grad1"
        x1 = "0"
        y1 = "0"
        x2 = "0"
        y2 = "1"
    >

全体です。

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

<svg width="200" height="200" viewBox="0 0 200 200">

    <linearGradient
        id = "grad1"
        x1 = "0"
        y1 = "0"
        x2 = "0"
        y2 = "1"
    >
	    <stop offset="0%"   stop-color="#000000" stop-opacity="0.7" />
	    <stop offset="100%" stop-color="#ffffff" stop-opacity="0.8" />
    </linearGradient>

    <rect
        x            = "0"
        y            = "0"
        stroke       = "#cccccc"
        stroke-width = "1"
        width        = "150"
        height       = "150"
        fill         = "url(#grad1)"
    />

</svg>

</body>
</html>

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

画面にアクセスすると、グラデーションの方向が、上から下に変化していることがわかります。

コメントを残す

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