私は円弧のtextPathラベルを生成する必要がある小さなアプリケーションを持っています。私はRaphaelを介してアークを描いており、それは素晴らしい作品です。しかし、RaphaelはtextPathsをサポートしていません。私たちはjQueryを使ってそれらをsvg要素に追加できますが、何らかの理由でレンダリングしません。動的に生成されたコードを静的に複製すると、うまく描画されます。jQueryでRaphael SVGイメージを変更する
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="600" height="600">
<desc>Created with Raphaël</desc><defs></defs>
<a title="This is a test entry">
<path fill="none" stroke="#1e79a0" d="M395.2627944162883,355A110,110,0,0,1,199.5099996593139,344.74103073833805" style="stroke-width: 20px; " stroke-width="20" id="This_is_a_test_entry"></path>
</a>
<text>
<textpath xlink:href="#This_is_a_test_entry">This is a test entry</textpath>
</text>
</svg>
上記のコードでは、円弧のラベルが表示されません。以下は、ハードコーディングされているしかしときには、期待通りにレンダリング:
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="600" height="600">
<a title="Bacon">
<path id="Arc" fill="none" stroke="#1e79a0" d="M395.2627944162883,355A110,110,0,0,1,201.13265490709162,348.2208261467985" style="stroke-width: 20;" stroke-width="20">
</path>
</a>
<text>
<textPath xlink:href="#Arc">This is an Arc</textPath>
</text>
</svg>
私ははるかに高く評価されるだろう私の全体のSVGを見ていないよ理由として任意の洞察力を。
EDIT:
私はJavaScriptに変更を加えたし、私はそれがほとんどそこだと思うけどtextPathはまだ表示されません。主にFemiのおかげで、現在のコードは次のようになります。textPathには0x0の境界ボックスがありますが、textPathには境界ボックスがあります。
ああ。どういうわけかそれに気付かなかった。この例では、 'これは弧 'であり、 'テストエントリは で、「 」です。 2番目の要素名は要素名が異なります(キャメルケースではなくすべて小文字)。私はここでSVGが大文字と小文字を区別していると仮定しています。 –
Femi
あなたは当初は正しかったです。実際のコードを反映するように投稿を修正しましたが、誤字がどこから来たのかわかりません。 私は1つの単語のIDで試してみましたが、それは何らかの理由でレンダリングされません。私が本当に異なっていると特定できる唯一のことは、Raphaelが完全にはレンダリングされず、他のものにはレンダリングされないsvgに接続されていることです。 – LeakyBucket
@LeakyBucket、あなたはフェミの編集を欠場しましたか?彼が言ったように、 'textPath'(大文字のPに注意)でなければなりません。 – mercator