SVG以%为单位旋转文本

时间:2012-08-24 12:03:19

标签: svg rotation transform

我尝试旋转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>

这张照片位于我的浏览器屏幕中间 The initial point

我希望它看起来像这样: The goal

但因为%

而无效
transform="rotate(-90 **50% 50%**)"

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

先谢谢你。

1 个答案:

答案 0 :(得分:3)

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

如果您无法在所使用的任何浏览器上看到该文本,请尝试将overflow =“visible”添加到内部<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>