以em为单位进行SVG翻译?

以em为单位进行SVG翻译?,svg,Svg,有没有一种方法可以使用em作为SVG翻译的单位?如 不幸的是,没有 规格(对应于CSS单位,未指定时默认为像素单位)将应用于坐标,而平移将专门用于由定义的浮点数。如果将要转换的元素包装在新坐标系中,则可以执行以下操作: <svg> <svg width="1em" height="1em" overflow="visible" viewBox="0 0 1 1"> <rect height="10" width="10" transform="trans

有没有一种方法可以使用em作为SVG翻译的单位?如

不幸的是,没有


规格(对应于CSS单位,未指定时默认为像素单位)将应用于坐标,而平移将专门用于由定义的浮点数。

如果将要转换的元素包装在新坐标系中,则可以执行以下操作:

<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/>

如果使用javascript创建rect,可以做的另一件事是检索父元素的字体大小并将em值转换为px

使用jQuery:

var one_em = +$("#parent").css("font-size").replace("px", "");
$("#parent").append("<rect transform=translate(0," + (10*one_em) + ") .../>")
var one_em=+$(“#父项”).css(“字体大小”).replace(“px”,“px”);
$(“#父项”)。追加(“”)

很抱歉,我没有将代码段突出显示为代码段,因此它不会显示。我非常确定转换单元(与
命令一样)必须都在用户空间中。但是,我将此作为评论而不是答案发布,因为我目前找不到证实此点的规范。更多信息:请阅读此处标记为“Transforms”[sic]的部分: