前に戻る

SVG

SVG(Scalable Vector Graphics)

目次

ベクターとラスター

  1. ベクターグラフィックス:座標情報からソフトウェアによって描くグラフィックス。拡大縮小の影響を受けない。
  2. アスターブラフィックス:ピクセル(画素)の集合によってあらわす。拡大すると、画素(色の矩形「くけい」または色の点)が見える。
トップへ戻る

XMLの概要

XML(Extensible Markup Language)

任意の用途に使えるように作られた言語に機能を容易に拡張できるようにしたマークアップ言語の総称

XML宣言

<?xml version="1.0" encoding="utf-8"?>

XMLドキュメントであることを宣言するもの。version"1.0"はXMLのバージョン。encodeing="utf-8"はXMLファイルのエンコーディング。

XMLの要素

XMLドキュメントに付けられたタグの解釈はドキュメントを扱うアプリケーションの問題でHTMLドキュメントで定められているタグを別のアプリケーションで別の目的で利用することもできる。

タグの形式

属性

要素内容の種類

種類意味
ほかの要素(element)ほかのタグ付き要素
キャラクタデータ(CharData)文字列データ(テキスト)
CDATAセクション(CDSect)"<![CDATA["文字列"]]>"の形式の文字列
処理命令(PI)<?で始まる処理命令
コメント(Comment)コメント

空の要素

ルート要素と子要素

ルート要素は一個で二個以上あってはならない。子要素はいくつでも可。

XML名前空間

XMLのタグ名が複数の目的に使われる場合にそれぞれを違ったものとして認識できるようにするための定義→名前空間

例)
<name xmlns:foo="http://www.owndomain.jp/directory1/foo">
上記のように宣言した場合fooの名前空間は「http://www.owndomain.jp/directory1/foo」となり、以後fooで修飾される時は定義された名前空間の場所を表す。
→ <element:foo>content</element:foo>
おそらくは宣言時のタグ名の配下において有効とする方法と思う

デフォルト名前空間

xmlns属性による名前空間宣言で、接頭辞を省略すると、その要素以下でデフォルトとなり、接頭辞なしのタグ名はデフォルトの名前空間に属するようになる。

トップへ戻る

HTML

HTML(HyperText Markup Language)

最新はHTML5。以前の拡張子は.htmが使われていた。これはWindows系のファイルシステムの拡張子が最大3文字だったころの名残。現在では拡張子は.htmlにするべきとされる。

インラインSVG

HTMLファイルの中にSVGグラフィックスを直接記述することができる。

HTMLファイルでSVGグラフィックスを埋め込む方法

トップへ戻る

SVG基本要素

SVGドキュメントで使用可能な文字
キャラクタ内容
#x9水平タブ
#xAラインフィード(改行)
#xDキャリッジリターン(復帰)
#x20空白
#x21-#xD7FFUnicodeキャラクタ
#xE000-#xFFFDUnicodeキャラクタ
#x10000-#x10FFFFUnicodeキャラクタ

エスケープしなければならない文字
文字エスケープ数値意味そのままでよい場合の例
&&amp;&#38アンパサンドキャラクタ
<&lt;&#60小なり不等号<タグ>
>&gt;&#62大なり不等号<タグ>
'&apos;&#39アポストロフィー
"&quot;&#34クォーテーション

SVGのホワイトスペース
コード意味
#x20スペース(いわゆる半角スペース)
#x9水平タブ(通常「Tab」キーを押すと入力される文字)
#xAラインフィード(改行)
#xDキャリッジリターン(復帰)

インデントのための空白は無視される。属性リストの空白に2個以上の空白を入れた場合も無視される。全角空白は空白に含まれない。

規則

色の指定方法
色の値使い方
#rrggbbrgbそれぞれ16進数で指定する。
red,green,blue,black等
rgb(0-255,0-255,0-255)
rgba(0-255,0-255,0-255,0-1.0)aは透明度
hsl(0-360,0-255,0-255)h色相(hue)0-360の範囲、s彩度(saturation)0-255の範囲、l明度(lightness)0-255の範囲
hsla(0-360,0-255,0-255,0-1.0)a透明度0-1.0の範囲

単位説明
emデフォルトフォントのサイズ(テキスト行と同じ高さ)
ex小文字xの大きさ
pxピクセル
ptポイント(1/72インチ)
pcパイカ(1/6インチ)
cmセンチメートル
mmミリメートル
inインチ

viewBox属性:viewBox="min-x min-y width height"で指定する

preserveAspectRatio属性

値意味
xMin左端にそろえる
xMid水平方向の中央に揃える
xMax右端にそろえる
yMin上端にそろえる
yMid垂直方向の中央に揃える
yMax下端にそろえる
meetスペースに収まるように配置する
sliceスペースに収まらない部分は切り取る
noneスペースに収まるように拡大縮小する
トップへ戻る

ドキュメントの構造

idで名前を付けておくとhref等で利用することができる。

switch要素で切り替えに仕える主な属性
名前意味
systemLanguageシステムの言語(ja、en、es、ruなど)
requiredFeaturesコードを実行するために必要な機能
requireExtentionsコードを実行するために必要なサポートされている拡張子

linearGradient要素で利用する属性
名前意味
spreadMethodグラデーションの広がり方を指定する
spreadMethod属性の値
pad最初と最後のストップの色を端まで引き延ばす
repeat端部に達するまで繰り返す
reflecct端部に達するまで反転しながら繰り返す

stop要素で利用する属性
名前意味
offset色の変換点をパーセンテージで指定
stop-color色を指定

image要素で利用する属性
名前意味属性値の例
xlink:href読み込むイメージのURL"image/sample.png"
x,yイメージの左上の座標
widthイメージの表示幅
heightイメージの表示高さ
preserveAspectRatio
clip-pathクリッピング領域を指定clip-path="url()"
maskマスク領域を指定mask="url()"
preserveAspectRatio属性に指定可能な値
値解説
none均等な拡縮を強制しない。必要なら不均等に拡縮される
xMinYMin均等な拡縮を強制する。XとYは最小値に揃える
xMidYMin均等な拡縮を強制する。Xは中央値、Yは最小値に揃える
xMaxYMin均等な拡縮を強制する。Xは最大値、Yは最小値に揃える
xMinYMid均等な拡縮を強制する。Xは最小値、Yは中央値に揃える
xMidYMid均等な拡縮を強制する。XとYは中央値に揃える(デフォルト)
xMaxYMid均等な拡縮を強制する。Xは最大値、Yは中央値に揃える
xMinYMax均等な拡縮を強制する。Xは最小値、Yは最大値に揃える
xMidYMax均等な拡縮を強制する。Xは中央値、Yは最大値に揃える
xMaxYMax均等な拡縮を強制する。XとYは最大値に揃える
meet縦横比は維持され、viewBox全体が見える最大の大きさ(既定値)
slilce縦横比は維持され、できるだけ小さく拡縮される。結果としてスライスされる

pattern要素で利用する属性
名前意味属性値の例
idあとで参照するためのID
x,y始点の座標
height高さに対する割合0.5、50%
width幅に対する割合0.2、20%
patternUnitsパターンの座標系userSpaceOnUse | objectBoundingBox
patternUnitsパターンの内容に対する座標系userSpaceOnUse | objectBoundingBox
patternTransformパターンの変換

トランスフォーム属性

transform="translate(x,y)"

名前意味機能
translate(x,y)移動座標を(x,y)だけずらす
scale(n)拡大・縮小座標をn倍する
rotate(r)回転座標をrだけ回転させる
skewX(r)、skewY(r)傾斜座標をrだけ傾斜させる
matrix(a,b,c,d,e,f)図形を変換する

matrix属性の計算式

a c e b d f 0 0 1 x(0) y(0) 1 = ax(0)+cy(0)+e bx(0)+dy(0)+f 1
トップへ戻る

様々な図形

目次

線

<line x1="n1" y1="n2" x2="n3" y2="n4" />

<line>の主な属性
名前意味属性値の例
x1,y1始点の座標x1="10" y1="10"
x2,y2終点の座標x2="100" y2="10"
stroke線の色blue
stroke-width線の太さ1px
「様々な図形」の先頭へ

折れ線

<polyline points="x1,y1,x2,y2,x3,y3,x4,y4,..." />

<polyline points="x1,y1 x2,y2 x3,y3 x4,y4 ..." />

<polyline>の主な属性
名前意味属性値の例
points座標ペアのリスト80,20,90,50,70,50,80,20
stroke線の色blue
stroke-width線の太さ1px
fill閉じた領域の場合の塗り潰し色none(塗り潰さない)、gray
「様々な図-形」の先頭へ

矩形(四角形)

<rect x="n1" y="n2" width="n3" heigth="n4" />

<rect>の主な属性
名前意味属性値の例または参照項目
x,y矩形の左上の座標
height矩形の高さ
width矩形の幅
rx,ry角丸にするときの角の半径
stroke線の色blue
stroke-width線の太さ1px
fill閉じた領域の場合の塗り潰し色none(塗り潰さない)、gray
「様々な図形」の先頭へ

円

<circle cx="n1" xy="n2" r="n3" />

<circle>の主な属性
名前意味属性値の例
cx,cy中心の座標
r円の半径
stroke線の色blue
stroke-width線の太さ1px
fill閉じた領域の場合の塗り潰し色none(塗り潰さない)、gray
「様々な図形」の先頭へ

楕円

<ellipse cx="n1" cy="n2" rx="n3" ry="n4" />

<ellipse>の主な属性
名前意味属性値の例
cx,cy中心の座標
rx楕円の水平方向の半径
ry楕円の垂直方向の半径
stroke線の色blue
stroke-width線の太さ1px
fill閉じた領域の場合の塗り潰し色none(塗り潰さない)、gray
「様々な図形」の先頭へ

多角形

<polygon points="x1,y1 x2,y2 x3,y3 x4,y4 ..." />

<polygon>の主な属性
名前意味属性の例
points頂点座標のリスト
stroke線の色blue
stroke-width線の太さ1px
fill閉じた領域の場合の塗り潰し色none(塗り潰さない)、gray
「様々な図形」の先頭へ

パス

<path>

<path>の主な属性
名前意味属性値の例
dパスのデータ
stroke線の色blue
stroke-width線の太さ1px
fill閉じた領域の場合の塗り潰し色none(塗り潰さない)、gray
パスのペン移動のコマンド
コマンド利用方法意味
MM x y絶対座標で指定された位置にペンを移動する
mm x y相対座標で指定された位置にペンを移動する
LL x1 y1 x2 y2 x3 y3 ...絶対座標で指定された位置まで直線を描く
ll x1 y1 x2 y2 x3 y3 ...相対座標で指定された位置まで直線を描く
ZZパスの開始点まで直線を描いてパスを閉じる
HH x絶対座標で指定された距離まで水平に直線を描く(Y軸の値は変わらない)
hh x相対座標で指定された距離まで水平に直線を描く(Y軸の値は変わらない)
VV y絶対座標で指定された距離まで垂直に直線を描く(X軸の値は変わらない)
vv y相対座標で指定された距離まで垂直に直線を描く(X軸の値は変わらない)
A下記参照絶対座標で指定された楕円を描く
a下記参照相対座標で指定された楕円を描く

楕円孤を描くA、aコマンド

A (x半径) (y半径) (回転角) (楕円孤の大きさ) (スイープ) (終点のx座標) (終点のy座標)

a (x半径) (y半径) (回転角) (楕円孤の大きさ) (スイープ) (終点のx座標) (終点のy座標)

ベジェ曲線

ベジェ曲線のペン移動のコマンド
コマンド書式意味
QQ x1 y1 x y絶対座標で制御点(x1,y1)を使って現在の点から(x,y)まで二次ベジェ曲線を描く
qq x1 y1 x y相対座標で制御点(x1,y1)を使って現在の点から(x,y)まで二次ベジェ曲線を描く
TT x y絶対座標で現在の点から(x,y)まで二次ベジェ曲線を描く
tt x y相対座標で現在の点から(x,y)まで二次ベジェ曲線を描く
CC x1 y1 x2 y2 x y絶対座標で制御点(x1,y1)と(x2,y2)を使って現在の点から(x,y)まで三次ベジェ曲線を描く
cc x1 y1 x2 y2 x y相対座標で制御点(x1,y1)と(x2,y2)を使って現在の点から(x,7)まで三次ベジェ曲線を描く
SS x2 y2 x y絶対座標で制御点(x2,y2)を使って現在の点から(x,y)まで三次ベジェ曲線を描く
ss x2 y2 x y相対座標で制御点(x2,y2)を使って現在の点から(x,y)まで三次ベジェ曲線を描く
「様々な図形」の先頭へ

マーカー

<marker></marker>

<marker>の主な属性
名前意味
idID
markerHeightマーカーの高さ
markerWidthマーカーの幅
refXマーカー位置をそろえるための基準点のX座標
refYマーカー位置をそろえるための基準点のY座標
styleのマーカー関連の属性
名前意味
markerパスの各点に描くマーカーを指定する[url(#id);で指定可能]
marker-startパスの視点に描くマーカーを指定する[url(#id);で指定可能]
marker-midパスの中央点に描くマーカーを指定する[url(#id);で指定可能]
marker-endパスの終点に描くマーカーを指定する[url(#id);で指定可能]
「様々な図形」の先頭へ
トップへ戻る

ストロークとフィル

ストロークとフィルに関係する属性の利用方法を示す。

ストローク

名前意味属性値の例
stroke線の色blue
stroke-width線の太さ1px
stroke-linecap端部の形状butt,round,square
stroke-linecap属性の値
値意味
butt指定した端部座標で終わる(デフォルト)
roud端部を丸くする(指定した端部座標から円の半径分だけはみ出す)
square端部を丸くしない(指定した端部座標から太さの半分だけはみ出す)
stroke-linejoin結合部分の状態miter,round,bevel
stroke-linejoin属性の値
値意味
miter角がある結合部分
round結合部を丸くする
bevel結合部の角を面取りする
stroke-dasharray破線と鎖線を指定するstroke-dasharray="(描く長さ) (描かない長さ) (描く長さ) (描かない長さ)..."
stroke-opacity線の透明度を指定するstroke-opacity="0.0-1.0"

フィル(塗り潰し)

名前意味属性値の例
fill塗り潰し色を指定none(defaultはblack)
fill-opacity塗り潰しの透明度を指定するfill-opacity="0.0-1.0"
fill-rule塗り潰しの範囲を指定するnonzero,evenodd
fill-rule属性の値
値意味
nonzeroすべて塗り潰し
evenodd垂直中心まで、水平方向に線が基数本ある場合塗り潰し、偶数の場合塗り潰さない(偶数部分は外部と判断する)
トップへ戻る

テキスト

<text>

<text x="n1" y="n2">グラフィックスとして描く文字列</text>

<text>の主な属性
名前意味属性値の例または参照項目
x,y描画開始点の座標
text-decorationテキストの就職underline(下線)、overline(上線)、line-through(取消線)
word-spacing単語間のあき
letter-spacing文字間のあき
stroke線の色blue
stroke-width線の太さ1px
visibility可視性
text-anchor位置揃え
textLength水平方向の長さを指定する
transformテキストを回転させるrotate(回転角度,中心X座標,中心Y座標)
writing-modeテキストの方向を指定(縦書き横書き)
glyph-orientation-vertical縦書き時に指定するSVG2では使われない
text-orientation縦書き時に指定するSVG2でglyph-orientation-verticalの代わりに利用される。[値:upright]
styleとして指定可能なフォント
font-sizeフォントのサイズ12px,10.5pt
font-familyフォントの種類serif、monospace、Century
font-weightフォントの太さbold、nomal
font-styleフォントの種類italic、nomal
text-anhor属性の値
値意味説明
start描き始め位置から描く英文字や日本語文字では指定した座標に対して左揃え
middle文字列を中央に描く中央揃え
end描き終りに揃える英文字や日本語文字では指定した座標に対して右揃え
writing-mode属性の値
値意味
lr-tb、lr左から右に描かれる
rl-tb、rl右から左に描かれる
tb-rl、tb上から下に描かれる
horizontal-tb横書き、上から下へ
vertical-rl縦書き、右から左
vertical-lr縦書き、左から右(日本語縦書き型)
glyph-orientation-vertical属性の値
値意味
auto自動的に決められる
mixed自動的に決められる
0deg、0垂直に描かれる
90deg、90横書きで描かれる

<tspan>

<tspan></tspan>

タグで囲んだ範囲のみ指定の属性を付与できる

<textPath>

パスに沿ったテキストを描く。xlink:hrefでパスを参照しそれに沿って描く。<textPath>は<text>の子要素として定義する必要がある。

例

text-decoration & fill none

underline overline line-thyrough fill none

グラデーションの指定と文字位置について

グラデーション文字 123abcpqrxyz日本語ひらがな

さまざまフォント

デフォルトフォント MS Mincho MS Gthic Century serif monospace bold italic

<tspan>による文字装飾

こんにちは駿河亮太です。これは 上 です。そしてこれは 下 です。 重要な箇所は下線を引く

text-anchorの指定

始点ライン startの場合 middleの場合 endの場合

textLength属性の指定

サンプル文字列 通常 サンプル文字列 textLength80 サンプル文字列 textLength100 サンプル文字列 textLength150

transform(テキストの回転)

テキストの回転 テキストの回転 テキストの回転 テキストの回転 テキストの回転 テキストの回転 テキストの回転 テキストの回転 テキストの回転 テキストの回転 テキストの回転 テキストの回転

縦書き

漢字かなを含む文字 漢字かなABCを含む文字。 漢字かなABCを含む文字。

パスに沿ったテキスト<textPath>

サンプル文字列 円周を回る文字列の表現方法。


トップへ戻る

フィルター

<filter id="name"> 子要素</filter>

適用時にはfilter="url()"を描画要素に付ける

目次

<feGaussianBlur>要素:ぼかし

<feGaussianBlur in="SourceAlpha" stdDeviation="暈し具合(1でも十分暈ける)" />

素晴らしいぞSVG!
フィルタートップへ戻る

<feColorMatrix>要素:カラーフィルター

<feColorMatrix type="hueRotate" values="フィルターのかかり具合"


フィルタートップへ戻る

<feComposite>要素:合成

<feComposite operator="" result="" >

<feMerge></feMerge>

<feMergeNode in="" />

<feComposite>のoperator演算子の値
値解説(AとBは合成する二つの入力)
overBにAを重ねた結果を生成する(<feMergeNode>と同じ)
inBの不透明部分と重なり合うAを生成する
outBの不透明な領域の外にあるAを生成する
atopBの内側にあるAの部分とAの外側にあるBの部分を重ねた結果を生成する
arithmetic4個の係数を指定しk1*A*B+k2*A+k3*B+k4の値を生成する

フィルタートップへ戻る

<feOffset>要素:影


フィルタートップへ戻る
トップへ戻る

アニメーション

SMIL(Synchronized Multimedia Integration Language)のこと

すべての要素は終了タグを必要とする。

<animate>要素

<要素 属性1="n" 属性2="n" ...>
<animate id="name" attributeName="name" attributeType="name" from="n" to="n" begin="ns" dur="ns" fill="name" repeatCount="n" />
</要素>

<animate>の主な属性
名前意味属性値の例または参照項目
id識別名
attributeName変化させる属性の名前
attributeType変化させる属性のタイプXML、CSS
from変化させる属性の初期値
to変化させる属性の最終値
by変化させる属性の増分(to-fromの値)
beginアニメーションを開始する時間ID.endでIDのアニメーションの終了後に始めることができる
durアニメーションの継続時間5s、500ms
repeatCountアニメーションの繰り返し回数indefinite:無制限
fill終了後の動作(freeze:そのまま、remove:元に戻す)
グラフィックスオブジェクトの主なイベント
名前意味
mouseoverマウスポインタが外からオブジェクトの上に移動した
mousemoveマウスポインタがオブジェクトの上で移動した
mouseoutマウスポインタがオブジェクトの上から外に移動した
clickマウスがクリックされた
actiovateオブジェクトがアクティブになった
focusInオブジェクトがフォーカスを受け取った
focusOutオブジェクトがフォーカスを失った

例


<set>要素

数値ではなくある状態から別の状態に変化させる。

<要素 属性1="n" 属性2="n" ...>
<set id="name" attributeName="name" attributeType="name" from="value" to="value" begin="ns" dur="ns" fill="name" />
</要素>

<animateTransform>要素

<要素 属性1="n" 属性2="n" ...>
<animateTransform attributeName="transform" attributeType="name" type="name" from="n" to="n" begin="ns" dur="ns" repeatCount="n" additive="sum" fill="name" />
</要素>

<animateTransform>の主な属性
名前意味属性値の例または参照項目
id識別名
attributeName変化させる属性の名前
attributeType変化させる属性のタイプXML、CSS
type変換の種類rotate、scale、translate、skewX/Y
from変化させる属性の初期値
to変化させる属性の最終値
beginアニメーションを開始する時間
durアニメーションの継続時間
repeatCountアニメーションの繰り返し回数

<animateMotion>要素

<要素 ...>
<animateMotion path="path" dur="ns" repeatCount="n" fill="color" />
</要素>

<animateMotion>の主な属性
名前意味属性値の例
pathブラフィックスを移動させるパス
beginアニメーションを開始する時間
durアニメーションの継続時間
repeatCountアニメーションの繰り返し回数
fill塗り潰し

CSSのアニメーション

CSSアニメーションで指定可能な主な属性
名前意味
animation-nameアニメーションを識別するための名前(@keyframesの名前)
animation-timing-function中間値の計算の方法(ease、linear、ease-in等)
animation-direction変化させる方法(反転させる場合はalternate、デフォルトはnormal)
animation-play-state実行状態(runningは実行中、pausedは停止中
animation-iteration-countアニメーションの繰り返し回数(infiniteを指定すると無限)
animation-durationアニメーションが継続する時間
animation-delayアニメーションを開始するまでの時間
animation-timing-functionに指定可能な値
値意味
ease開始と完了を滑らかにする(デフォルト)
linear一定に変化させる
ease-inゆっくり始める
ease-outゆっくり終わる
ease-in-outゆっくり初めてゆっくり終わる
cubic-bezier()三次ベジェ曲線を指定する。

設定例

<style type="text/css">
要素名{
animation-name:name; //アニメーションの名前
animation-duration:ns; //アニメーション時間
animation-timing-function:ease; //アニメーションのタイミング
animation-iteration-count:n; //アニメーションの繰り返し回数
animation-direction:alternate; //アニメーションを変化させる方法
animation-play-state:running; //アニメーションの実行状態
}

@keyframes name{
0%{
//0%の時間での変化状態
}
100%{
//100%の時間での変化状態
}
}

トップへ戻る