SVG以%为单位旋转文本

Chr*_*ris 5 svg transform rotation

我尝试旋转svg文本。我通过从xslt调用php函数来获取文本的位置,即%,即15%。问题是我无法使用%旋转svg对象。如果我使用数字代替它会起作用。下面我以简化的形式提出问题:

<?xml version="1.0"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://ww.w3.org/2001/xml-events" xmlns:php="http://php.net/xsl" version="1.1" baseProfile="full">
  <text x="50%" y="50%" transform="rotate(-90 50% 50%)">rotateMe</text>
  <line x1="50%" y1="47%" x2="60%" y2="47%" stroke="black" stroke-width="2px"/>
</svg>
Run Code Online (Sandbox Code Playgroud)

这张照片在我的浏览器屏幕中间 初始点

我希望它看起来像这样: 目标

但由于%而无法使用

transform="rotate(-90 **50% 50%**)"
Run Code Online (Sandbox Code Playgroud)

我需要使用%作为坐标。对我的问题有任何想法或解决方案吗?

在此先感谢您。

Rob*_*son 4

您可以使用内部元素转换坐标<svg>。下面的示例按照您在 Firefox 上的“我希望它看起来像这样”的位图显示。

如果您在使用的任何浏览器上都看不到文本,请尝试将溢出=“可见”添加到内部<svg>元素,以便您可以看到它的最终位置。并非所有浏览器都支持dominant-baseline 属性,因此您可能需要修改文本的 y 属性。

<?xml version="1.0"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
  <svg x="50%" y="50%" width="100" height="100">
      <text text-anchor="end" dominant-baseline="text-before-edge" transform="rotate(-90 0 0)">rotateMe</text>
  </svg>
  <line x1="50%" y1="47%" x2="60%" y2="47%" stroke="black" stroke-width="2px"/>
</svg>
Run Code Online (Sandbox Code Playgroud)