是否有可能在SVG中显示多行文本而不使用dy
属性?我正在使用SVG 1.1,但可能可以使用1.2。
<svg xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
<text x="0" y="15" font-size="15">
<tspan>tspan line 1</tspan>
<tspan>tspan line 2</tspan>
<tspan>tspan line 3</tspan>
</text>
</svg>
tspan
都是一个新行。我只能使用 tspan
标签吗?我想让 SVG 在垂直方向上定位文本行并进行换行。我不想手动输入 dy
。根据我所读的,每一行应该出现在另一行下面。它们确实是,但它们也错落排列。
<svg xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
<text x="0" y="0" font-size="15">
<tspan dy="15">tspan line 1</tspan>
<tspan dy="15">tspan line 2</tspan>
<tspan dy="15">tspan line 3</tspan>
</text>
</svg>
我猜需要添加x
属性。如果你将dy
属性设置为固定值,当你改变字体大小时会发生什么?
这比我一开始尝试的效果要好:
<svg xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xml:space="preserve">
<text x="0" y="0" font-size="15" font-family="courier new" dy="0">
<tspan x="0" dy="15">tspan line 1</tspan>
<tspan x="0" dy="15">tspan line 2</tspan>
<tspan x="0" dy="15">tspan line 3</tspan>
</text>
</svg>
x
和 dy
应用于所有的 tspan
?也许可以在 text
元素上使用类似于 line-height
的属性?看起来文本标签没有设置 delta y 的属性。评论中已经建议使用 JQuery 来设置所有 tspan
的 x
属性。看起来 dy
属性可以接受其他类型的值,如点和百分比!?是否有一种方法将 dy
设置为其父文本元素字体大小的120%?我尝试将其设置为 120%,但它似乎不像我期望的那样工作。当我在 dy
属性中设置 120% 时,它会移出屏幕。当我将其设置为 12
或 12px
时,它保持在同一位置。如果我将其设置为12%
,它会稍微移动但不是120%或12px。
http://codepen.io/anon/pen/PqBRmd
看起来它可以接受以下任何一种:http://www.w3.org/TR/SVG/types.html#InterfaceSVGLength
我还查找了
dy
和dx
的可接受值类型,但我无法理解它http://www.w3.org/TR/SVG/text.html#TSpanElementDXAttribute.
更新4:感谢迄今为止的答案。看起来有一种方法可以显示多行文本并相对间隔。请参见我的答案。
jQuery('tspan').attr('x','0')
将所有的tspan
设置为0
。 - Alvin K.