1

私の目標は、次のようにライン ノードを再利用することです。

<defs>
   <desc>x1 and x2 values never change, would like to provide y1 and y2 in use</desc>
   <line id="p" x1="5" x2="1019" stroke-width="1" stroke="#808080" opacity=".3"/>
</defs>

<use xlink:href="#p" y1="718.5" y2="718.5"/>

SVG を学習する際に、use ステートメントで指定されたパラメーターは定義内のテンプレートに渡されると思いましたが、どうやらそうではありませんか? W3ドキュメントによると:

「use」要素にはオプションの属性「x」、「y」、「width」、および「height」があり、参照要素のグラフィック コンテンツを現在の座標系内の長方形の領域にマッピングするために使用されます

ただし、「use」は「Any...graphical element...」をサポートするはずで、行が含まれています。行には x、y、幅、または高さの属性がありません。x1、y1、x2、y2 があります。

また、これにより、ストローク、ストローク幅など、あらゆる種類の他の属性を渡すことができなくなります。

use ステートメントは本当に x、y、width、および height だけに制限されていますか、それとも属性を def テンプレート ノードにマージする別の方法はありますか?

4

1 に答える 1

1

line は<svg>要素でも要素<symbol>でもないため、ここで説明します。

生成されたコンテンツでは、「use」は「g」に置き換えられます。「x」、「y」、「width」、「height」、および「xlink:href」を除く「use」要素のすべての属性は、生成された 'g' 要素に転送されます。追加の変換 translate(x,y) が、生成された 'g' の 'transform' 属性の末尾 (つまり右側) に追加されます。ここで、x と y は 'x' と 'y' の値を表します。 「use」要素の属性。参照されたオブジェクトとそのコンテンツは、生成されたツリーにディープ クローンされます。

したがって、幅と高さは無視され、x と y は線を平行移動する方法になります。基本的にそれでできることはそれだけです。

于 2013-10-08T11:36:10.957 に答える