14

SVG 翻訳の単位として em を使用する方法はありますか? のように

<rect height="10em" width="10em" transform="translate(0em, 10em)"
 style="fill:none;stroke-width:3;stroke:black/>

単位として em を削除しない限り、長方形は Firefox で変換されません。

4

3 に答える 3

18

新しい座標系で変換する要素をラップすると、これを行うことができます。

<svg>
  <svg width="1em" height="1em" overflow="visible" viewBox="0 0 1 1">
    <rect height="10" width="10" transform="translate(0, 10)" .../>
  </svg>
</svg>

翻訳のみが必要で、x および y 属性 (または同等のもの) を持つ要素を使用する場合の別のオプションは、次のように代わりにそれらを使用することです。

<rect x="0" y="10em" height="10em" width="10em" 
 style="fill:none;stroke-width:3;stroke:black/>

CSS/SVGの変換に関する新しい仕様が現在作成中であり、実際に翻訳で単位を使用できるようになります。こちらを参照してください。

于 2012-04-26T06:57:39.830 に答える
6

残念ながら違います;

仕様では、ユーザー単位(CSS 単位に対応し、特に指定されていない場合はデフォルトでピクセル単位) を座標に適用することを明示的に許可していますが、変換はSVGMatrix インターフェースで定義されているように、浮動小数点数のみで使用することを意図しています。

于 2012-04-25T23:21:25.640 に答える
0

JavaScript で rect を作成している場合にできるもう 1 つの方法は、親要素のフォント サイズを取得し、em 値を px に変換することです。

jQuery の使用:

var one_em = +$("#parent").css("font-size").replace("px", "");
$("#parent").append("<rect transform=translate(0," + (10*one_em) + ") .../>")
于 2018-07-11T10:52:30.960 に答える