以前にもタグの解説の中でSVGを紹介しましたが、見直してみるとだいぶ足りていなかったので、改めて解説しなおしたいと思います。
前回の記事は下記です。
解説というよりはタグと属性の一覧といった感じになりますが、少し補足を入れる形で紹介します。
SVGの属性とタグの解説
SVG(Scalable Vector Graphics)は、ベクター形式のグラフィックスを描画するためのXMLベースのフォーマットです。SVGを使用すると、高解像度でスケーラブルなグラフィックスをウェブ上で簡単に作成できます。この記事では、SVGの主なタグと属性について詳しく解説します。
主なタグ
<svg>: SVGのルート要素
SVGドキュメントを定義するルート要素です。
- 属性:
width
: SVGキャンバスの幅。height
: SVGキャンバスの高さ。xmlns
: 名前空間を指定。viewBox
: ビューポートのサイズと位置を指定。
<svg width="200" height="200" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200">
<!-- SVG要素をここに追加 -->
</svg>
<g>: グループ要素
複数のSVG要素をグループ化するために使用されます。
- 属性:
transform
: グループ内の要素に対する変形を指定。fill
: グループ内の要素の塗りつぶし色。stroke
: グループ内の要素の線の色。
<g transform="translate(50,50)">
<!-- グループ化されたSVG要素 -->
</g>
<rect>: 長方形を描画
長方形を描画するための要素です。
- 属性:
x
: 長方形の左上のx座標。y
: 長方形の左上のy座標。width
: 長方形の幅。height
: 長方形の高さ。rx
: 角のx方向の半径。ry
: 角のy方向の半径。fill
: 塗りつぶしの色。stroke
: 枠線の色。
<rect x="10" y="10" width="100" height="50" fill="gray" stroke="black"/>
<circle>: 円を描画
円を描画するための要素です。
- 属性:
cx
: 円の中心のx座標。cy
: 円の中心のy座標。r
: 円の半径。fill
: 塗りつぶしの色。stroke
: 枠線の色。
<circle cx="50" cy="50" r="40" fill="gray" stroke="black"/>
<ellipse>: 楕円を描画
楕円を描画するための要素です。
- 属性:
cx
: 楕円の中心のx座標。cy
: 楕円の中心のy座標。rx
: x方向の半径。ry
: y方向の半径。fill
: 塗りつぶしの色。stroke
: 枠線の色。
<ellipse cx="80" cy="50" rx="50" ry="25" fill="gray" stroke="black"/>
<line>: 直線を描画
直線を描画するための要素です。
- 属性:
x1
: 直線の始点のx座標。y1
: 直線の始点のy座標。x2
: 直線の終点のx座標。y2
: 直線の終点のy座標。stroke
: 線の色。
<line x1="10" y1="10" x2="100" y2="100" stroke="black"/>
<polyline>: 複数の連続する直線を描画
連続する直線を描画するための要素です。
- 属性:
points
: 直線の頂点のリスト(各頂点はカンマで区切り、頂点間はスペースで区切る)。fill
: 塗りつぶしの色。stroke
: 枠線の色。
<polyline points="0,0 50,25 50,75 100,100" fill="none" stroke="black"/>
<polygon>: 複数の点を結んで閉じた図形を描画
多角形を描画するための要素です。
- 属性:
points
: 多角形の頂点のリスト。fill
: 塗りつぶしの色。stroke
: 枠線の色。
<polygon points="50,150 100,100 150,150" fill="gray" stroke="black"/>
<path>: 複雑な形状を描画
パスデータを指定して複雑な形状を描画するための要素です。
- 属性:
d
: パスデータ。fill
: 塗りつぶしの色。stroke
: 枠線の色。
<path d="M10 10 H 90 V 90 H 10 Z" fill="gray" stroke="black"/>
<text>: テキストを描画
テキストを描画するための要素です。
- 属性:
x
: テキストの左端のx座標。y
: テキストのベースラインのy座標。font-family
: フォントファミリ。font-size
: フォントサイズ。fill
: テキストの色。
<text x="10" y="50" font-family="Arial" font-size="24" fill="black">Hello, SVG!</text>
主な属性
x
: 要素のx座標を指定します。y
: 要素のy座標を指定します。width
: 要素の幅を指定します。height
: 要素の高さを指定します。cx
: 円や楕円の中心のx座標を指定します。cy
: 円や楕円の中心のy座標を指定します。r
: 円の半径を指定します。rx
: 楕円のx方向の半径を指定します。ry
: 楕円のy方向の半径を指定します。fill
: 塗りつぶしの色を指定します。stroke
: 線の色を指定します。transform
: 要素の変形を指定します(例:rotate
,translate
,scale
)。d
: パス要素のデータを指定します。
サンプルコード
<svg version="1.1" baseProfile="full" width="200" height="200" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200">
<!-- 長方形 -->
<rect x="20" y="20" width="160" height="60" fill="gray" stroke="black" />
<!-- 円 -->
<circle cx="150" cy="150" r="30" fill="gray" stroke="black" />
<!-- 三角形 -->
<polygon points="50,150 100,100 150,150" fill="gray" stroke="black" />
</svg>
これらのタグや属性を使用して、さまざまな図形やテキストをSVGで描画することができます。
SVGは、スケーラブルで高品質なグラフィックスを作成するための強力なツールです。
基本的にはIllustratorから直接コードを取ってきてしまったり、svgファイルをテキストエディタなどで開いてコードを取ってきたりと、0から書くことは基本的にないとは思いますが、仕組みを理解しておくことでCSSやjsにてアニメーションを付けることなども簡単にできるようになります。
普通の画像ではできないことができ、尚且つ容量も重たくないことがSVGの強みだと思います。
グラデーションやフィルター・透過系には弱いですが、この記事が活用するきっかけになってくれたらうれしいです。
また、ウェブデザイン技能検定でもSVGのタグについての出題されたことがありますので、対策として覚えておいてもよいかもしれません。