2017-03-28 11 views
0

私はこれは私が試したものです、スナップが作成したSVGに動的にテキストを配置しようとしている:Snap.svgとダイナミックテキスト

this.setContent(
    `<svg id="${this.svgId}"></svg>` 
); 

var snap = Snap($(`#${this.svgId}`)[0]); 
text = "asdfsdfsdsfd"; 

var rect = snap.paper.rect(0, 0, 50, text.length*3 + 4, 10); 
snap.text(1.5,10, text); 

console.log("rect", rect); 
console.log("snap", snap); 

rect.attr({ 
    fill: "#FFFFFF", 
    fillOpacity: 0.6, 
}); 

私はこの取得:enter image description here

を私は長方形をしたいですテキストより少し大きめですが、テキストの長さと高さを計算するよりも良い方法があります。これは、フォントサイズが変わらないと仮定しています。 http://snapsvg.io/docs/#Paper.text

答えて

1

あなたはテキスト要素にgetBBox()を使用してみてください、と矩形の大きさを把握することを使用することができます。

これは私がスナップドキュメント内のテキストに関する見つけた唯一の結果です。 getBBox()はx、y、幅、高さ、x2、y2の数値を返します。

vat text = s.text(0,0,'blah blah') 
var bb = text.getBBox(); 
var rect = s.rect(bb.x, bb.y, bb.width, bb.height) 

任意の詰め物などのオフセットを調整します。私はそれが含まれているとは思わないので、また、ストロークの幅を許可する必要があります。

+0

「s」とは何ですか?スナップオブジェクト? – shinzou

+0

これはあなたのペーパーまたはsvgです。通常、s = Snap( '#mysvgcontainer')またはs = Snap(800,800)またはそれを設定するものです。あなたの例では、もしあなたがその両方を使ったようにスナップまたはスナップペーパーであるかどうかはわかりません。 – Ian

+0

どうやらドキュメントが混乱していました。どうすればその長方形を 'var snap = Snap($('#$ {this.svgId} ')[;])に置くことができますか? – shinzou

関連する問題