必要な<tspan>
for each 単語を含むテキスト要素を含む新しい SVG マークアップを使用して、カスタム シェイプを作成する必要があります。標準の Rect 要素からマークアップを適合させることができます。各要素に異なるクラス名を付けます。たとえば<text/>
、Rect マークアップの要素を に 置き換え<text><tspan class="word1"/><tspan class="word2"/></text>
ます。形状の定義は次のようになります。
joint.shapes.my.twoTextRect = joint.shapes.basic.Generic.extend({
markup: '<g class="rotatable"><g class="scalable"><rect/></g><text><tspan class="word1"></tspan> <tspan class="word2"></tspan></text></g>',
defaults: joint.util.deepSupplement({
type: 'my.twoTextRect',
attrs: {
rect: { fill: 'white', stroke: 'black', 'stroke-width': 1, 'follow-scale': true, width: 160, height: 35 },
text: { ref: 'rect' },
'.word1': { 'font-size': 12 },
'.word2': { 'font-size': 8 }
},
size: { width: 160, height: 35 }
}, joint.shapes.basic.Generic.prototype.defaults)
});
次に、シェイプ インスタンスを作成します。
var rectShape = new joint.shapes.my.twoTextRect();
<tspan>
使用できるSVG要素のテキストを設定するには
rectShape.attr('.word1/text', 'word 1');
rectShape.attr('.word2/text', 'word 2');
これにより、次のような要素が得られます。
次のように要素を複製できます。
var clone = rectShape.clone().translate(520, 10).attr({'.word1': {text: 'clone1'}, '.word2': {text: 'clone2' }});
これにより、新しい要素が作成されます。