== 図形をまとめて扱う == いくつかの図形をまとめてグループとして扱ったり、図形に名前をつけ名前で図形を参照するための要素です。 * group * symbol * use ---- === グループ === いくつかの図形をまとめてグループとして扱うことができます。 グループをさらにグループの中に含むこともできます。 グループの記述には g 要素を使います。 {{{ }}} この例では2つのグループがあり、一方のグループはもう1つのグループを含んでいます。 . fill属性を外側のグループで指定することで、個々の図形での指定を省略しています。 . 属性の値は継承されます。 . 1つ目の長方形は青、2つ目の長方形は赤、3つ目の長方形は黒になります。 ---- === id 属性 === id属性を使って図形やグループには名前をつけることができます。 名前をつけておくと、ほかの場所で使うことができます。 長方形2つからなるグループに rei という名前をつけた例です。 {{{ }}} ---- === use 要素 === 名前をつけた図形やグループを使うには use 要素で記述します。 {{{ }}} これは rei という名前で定義された図形(グループ)を、位置(100,50)に表示せよという指示になります。 描画する座標(100,50)が、グループreiでの座標(0,0)に対応します。 名前は id 属性で定義されたものです。 参照の書きかたに注意してください。'''xlink:href="#名前"''' です。 例 {{{ }}} 大小の円を重ねた図形を g要素でグループ化しています。 名前を g1 と付けています。 色はg要素で指定し、個々のcircle要素には記述していません。 use要素でg1を参照し、x方向に100ずらした位置に描画します。 同じ形の図形が g の箇所と use の箇所の2回描画されます。 ---- === defs内に記述する === ... の内部に書いた要素は、定義だけが行われ、その時点では描画は行われません。 図形の定義だけを行ってその時点では描画をしないで、あとで use で使うことができます。 ... はSVGデータの中に1つしか書けませんでした。 したがって、通常のSVGデータはつぎのような構造になります。 {{{ タイトル スタイルの定義 図形の定義 ... 図形の記述 ... }}} 先ほどの例の g の部分を defs 内に移動し {{{ }}} とすると、描画されるのは use で指定したものだけになります。 ---- === use 要素に style を記述する === use 要素に style を記述することもできます。 下の例では、use要素でstyleを記述し、色を変えて描画しています。 g要素で定義された図形のうち、styleの指定されていない2つのcircleの色はuseで指定したものになります。 3つのcircleのうち3つ目のものは定義のときにstyleが指定されており、useで指定された色ではなく、circleで指定された色になります。 {{{ }}} ---- === symbol要素 === g の代わりに symbol を用いてグループを作ることもできます。 違いは次の2点です。 1)symbol で定義したグループは(すぐには)描画されない。 . defs内に書かなくても、定義だけが行われ描画されません。 . defs内に書いても同じです。 2)symbol には viewBox を指定することができる。 {{{ 図形の記述 }}} のように用います。 viewBoxとwidth heightの対応はsvg要素の場合と同じです。