一篇文章帶你了解SVG <tspan>元素
SVG <tspan>元素用于在SVG中繪制多行文本。不必絕對定位每行文本,該 <tspan>元素使相對于前一行文本放置一行文本成為可能。該 <tspan>元素還使用戶可以一次選擇并復(fù)制粘貼幾行文本,而不僅僅是一個(gè)text元素。
一、tspan簡單案例分析
- <svg xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink">
- <text x="20" y="15">
- <tspan>tspan line 1</tspan>
- <tspan>tspan line 2</tspan>
- </text>
- </svg>
運(yùn)行效果:
注意
<tspan>結(jié)果如何導(dǎo)致文本行相對于彼此(彼此之后)定位。
二、定位
1. 垂直定位
如果希望將線垂直相對放置,可以使用dy 屬性(delta y)。現(xiàn)在,由于dy第二個(gè)<tspan>元素的屬性設(shè)置為“ 10” ,因此第二行文本顯示在第一行文本下方10個(gè)像素處。
- <svg xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink">
- <text x="20" y="15">
- <tspan>tspan line 1</tspan>
- <tspan dy="10">tspan line 2</tspan>
- </text>
- </svg>
運(yùn)行效果:
注:
如果要將<tspan>元素定位 在絕對y位置y ,請像對待<text>元素一樣使用屬性。如果在dy屬性內(nèi)寫入多個(gè)數(shù)字,則每個(gè)數(shù)字都將應(yīng)用于<tspan>元素內(nèi)文本的字符。
例:
- <svg xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink">
- <text x="10" y="15">
- <tspan dy="5 10 20">
- 123
- </tspan>
- </text>
- </svg>
運(yùn)行效果:
注:
字形之間的垂直間距現(xiàn)在是如何變化的。
2. 水平定位
要將文本相對定位在x軸上,可以使用dx屬性(delta x)。
下面的示例顯示了設(shè)置dx為30 的效果。
例(請注意,現(xiàn)在第二行文本相對于第一行文本的末尾(不是開頭)顯示30個(gè)像素)
- <svg xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink">
- <text x="20" y="15">
- <tspan>tspan line 1</tspan>
- <tspan dx="30" dy="10">tspan line 2</tspan>
- </text>
- </svg>
運(yùn)行效果:
如果在dx屬性內(nèi)指定多個(gè)數(shù)字,則每個(gè)數(shù)字將應(yīng)用于<tspan>元素內(nèi)的每個(gè)字母。
例
- <svg xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink">
- <text x="10" y="20">
- <tspan dx="5 10 20">123</tspan>
- </text>
- </svg>
運(yùn)行效果:
還可以設(shè)置x屬性以固定文本行的x坐標(biāo)。如果要在彼此下方顯示所有未調(diào)整的行的列表,這將很有用。這是一個(gè)x在三行中設(shè)置為10 的示例:
示例
- <svg xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink">
- <text y="20">
- <tspan x="10">tspan line 1</tspan>
- <tspan x="10" dy="15">tspan line 2</tspan>
- <tspan x="10" dy="15">tspan line 3</tspan>
- </text>
- </svg>
運(yùn)行效果:
三、樣式tspan元素
可以<tspan>單獨(dú)設(shè)置元素樣式。因此,可以使用<tspan> 元素來設(shè)置文本塊的樣式,以使其不同于其余文本。
- <svg xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"><text x="10" y="20">
- Here is a <tspan style="font-weight: bold;">bold</tspan> word.
- </text></svg>
運(yùn)行結(jié)果
四、基線偏移的上標(biāo)和下標(biāo)
可以使用baseline-shiftCSS屬性使用<tspan>元素創(chuàng)建上標(biāo)和下標(biāo) 。
這是一個(gè)SVG baseline-shift示例,顯示了如何:
示例
- <svg width="500" height="100">
- <text x="10" y="20">
- Here is a text with
- <tspan style="baseline-shift: super;">superscript</tspan>
- and <tspan style="baseline-shift: sub;">subscript</tspan> mixed with normal
- text.
- </text>
- </svg>
運(yùn)行效果:(注意:firefox可能不支持)
五、總結(jié)
本文基于SVG基礎(chǔ),介紹了有關(guān)的元素定位,改變不同的屬性,實(shí)現(xiàn)不一樣的位置顯示效果。以及實(shí)際項(xiàng)目應(yīng)用中基線偏移的上標(biāo)和下標(biāo)的應(yīng)用。本文運(yùn)用豐富的效果圖展示,能夠讓讀者更好的理解。
歡迎大家積極嘗試,有時(shí)候看到別人實(shí)現(xiàn)起來很簡單,但是到自己動(dòng)手實(shí)現(xiàn)的時(shí)候,總會(huì)有各種各樣的問題,切勿眼高手低,勤動(dòng)手,才可以理解的更加深刻。
代碼很簡單,希望對你學(xué)習(xí)有幫助。
本文轉(zhuǎn)載自微信公眾號(hào)「前端進(jìn)階學(xué)習(xí)交流」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系前端進(jìn)階學(xué)習(xí)交流公眾號(hào)。