【问题标题】:What is the unit SVG text coordinates?什么是单位 SVG 文本坐标?
【发布时间】:2021-01-12 14:40:10
【问题描述】:

大家好。有人可以解释一下 Svg 文本坐标的单位是什么吗?我们如何将它们转换为像素?谢谢你。

编辑:

感谢 Robert 的回答;但是我在使用它时遇到了问题。这是我的代码:

<svg viewBox="0 0 1000 1000"> 

<text x="23.5625" y="195.98749542236328" fill="red" style="font-size: 60px">Hi</text>

</svg>

<input style="position: absolute; left: 23.5625px; top: 195.987px">

只需将页面设为全屏,然后尝试缩放。

【问题讨论】:

标签: svg coordinates coordinate-systems


【解决方案1】:

the SVG specification 省略的单位与像素相同。

一个 px 单位被定义为等于一个用户单位。因此,“5px”的长度与“5”的长度相同。

请注意,viewBox 应用了使 SVG 响应的变换。如果您想匹配绝对定位的输入,那么您不希望这样。此外,默认情况下,文本的基线是大多数字母的底部,如果我们使用悬挂作为基线,那么它将与输入匹配。

我还将输入不透明度设置为 0.5,因此您可以看到 SVG 现在位于输入元素下方。

html, body, svg {
  width: 100%;
  height: 100%;
}
<svg> 

<text x="23.5625" y="195.98749542236328" fill="red" style="font-size: 20px;dominant-baseline: hanging;">Hi</text>

</svg>

<input style="position: absolute; left: 23.5625px; top: 195.987px;opacity: 0.5;">

【讨论】:

  • 带有px 值的 SVG 元素的样式将被转换为用户单位,但反之则不行。屏幕上占用的像素数量完全取决于 SVG 的显示大小等。
  • 正如我所说,这取决于您是否使用 viewBox。如果你不这样做,除非你使用转换 1 user unit = 1px
  • 我需要 viewBox 才能使用。那我该怎么办?
  • 将 html 输入元素放入 SVG 中的 foreignObject 元素中
  • 爱你!这对我帮助很大:D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-08
  • 1970-01-01
  • 1970-01-01
  • 2011-02-18
  • 2020-05-24
相关资源
最近更新 更多