text-align =“middle”_only_在y方向?

时间:2013-10-08 16:54:14

标签: text svg alignment text-alignment

我可以在文本元素上使用text-align="middle"来居中文本。实际上这只适用于x方向。对于y方向,我使用问题Aligning text in SVG中的Ian G的黑客。

但是,如果想要在y方向上居中文本,但又希望在x方向上左对齐文本,我该怎么办? 例如,我有一个rect - 元素和一个text - 元素位于其右侧。文本应垂直对齐,以显示相对于rect的居中。因此我使用text-align="middle"属性。但是我想在x方向左对齐文本(因为我想在rect的右边显示它)。这不起作用,因为text-align始终应用xy值。

实际上我对这种垂直对齐方式并不满意,并且更喜欢别的东西。但是还没有找到更好的解决方案。 (我不能使用dominant-baseline属性,因为我使用的是Batik,它不支持它。)我甚至无法自己计算,因为在SVG中我无法查询上升/下降/字体的基线。

1 个答案:

答案 0 :(得分:2)

您发现的baseline相关属性尚未得到普遍支持(

)。

一种可能的解决方案是使用类似于旧CSS技巧的方法进行垂直居中。

将文本的y坐标设置为要居中的对象的垂直中心。然后使用带有em值的dy来正确调整文本。

<text x="0" y="100" font-family="Verdana" font-size="20pt" dy="0.35em">Some TEXT</text>

dy的数量不会像你想象的那样是0.5em,因为字体的视觉中心不会是em高度的一半。它会因字体而异。但是,一旦找到特定字体的良好dy值,它就适用于任何字体大小。

在这里演示:http://jsfiddle.net/js88W/1/

尝试更改字体大小值以确认它保持居中。