ブラウザに依存しないコードを書きたいです。私の目標は、テキストが中央に配置された円弧を表示することです。
そのために、d3.js を使用して弧を描きます。
var elem = vis.append("svg:path")
.attr("d", myarc(inR, outR, startA, endA, orient))
.attr("transform", "translate(200,200)")
.attr("fill", "rgb(255, 255, 255)")
.style("stroke-width", 0.2)
.style("stroke", "#BBB")
.attr("id", "0_1");
次に、テキストをそれにバインドして円弧をたどり、円弧の半径の半分からy
方向に、角度の長さの半分から移動しx
ます。
text.append("text")
.style("font-size", "14px")
.style("font-weight", "bold")
.attr("dx", spaceLength / 2.0)
.attr("dy", 25)
.attr("method", "stretch")
.attr("spacing", "auto")
.append("textPath")
.attr("xlink:href", "#0_1")
.attr("text-anchor", "middle")
.text("Test text :)");
私の問題は、Chrome と Firefox がこのコードを同じようにレンダリングしないことです。このdx
属性は、Chrome では Firefox よりも 2 倍多くテキストを右にシフトしています。
Firefox でレンダリングする方法は次のとおりです。
Firefox で動作させるには、以下を置き換える必要があります。
.attr("dx", spaceLength / 2.0)
に
.attr("dx", spaceLength)
ブラウザ検出機能を実装せずに、このコードを両方のブラウザで同じように表示するにはどうすればよいですか?
この 2 つのブラウザーでのレンダリングの違いは何によって生じているのでしょうか?
問題を再現する完全なコード サンプルは、http: //jsfiddle.net/taxQK/1/から入手できます。
どうもありがとう