一篇文章带你了解SVG <tspan>元素

开发 前端
SVG 元素用于在SVG中绘制多行文本。不必绝对定位每行文本,该 元素使相对于前一行文本放置一行文本成为可能。该 元素还使用户可以一次选择并复制粘贴几行文本,而不仅仅是一个text元素。

[[360019]]

 SVG 元素用于在SVG中绘制多行文本。不必绝对定位每行文本,该 元素使相对于前一行文本放置一行文本成为可能。该 元素还使用户可以一次选择并复制粘贴几行文本,而不仅仅是一个text元素。

一、tspan简单案例分析

  1. <svg xmlns="http://www.w3.org/2000/svg" 
  2.     xmlns:xlink="http://www.w3.org/1999/xlink"
  3.  
  4.    <text x="20" y="15"
  5.        <tspan>tspan line 1</tspan> 
  6.        <tspan>tspan line 2</tspan> 
  7.    </text> 
  8. </svg> 

运行效果: 

 

注意

结果如何导致文本行相对于彼此(彼此之后)定位。

二、定位

1. 垂直定位

如果希望将线垂直相对放置,可以使用dy 属性(delta y)。现在,由于dy第二个元素的属性设置为“ 10” ,因此第二行文本显示在第一行文本下方10个像素处。

  1. <svg xmlns="http://www.w3.org/2000/svg" 
  2.     xmlns:xlink="http://www.w3.org/1999/xlink"
  3.  
  4.    <text x="20" y="15"
  5.        <tspan>tspan line 1</tspan> 
  6.        <tspan dy="10">tspan line 2</tspan> 
  7.    </text> 
  8. </svg> 

运行效果:


注:

如果要将元素定位 在绝对y位置y ,请像对待元素一样使用属性。如果在dy属性内写入多个数字,则每个数字都将应用于元素内文本的字符。

例:

  1. <svg xmlns="http://www.w3.org/2000/svg" 
  2.     xmlns:xlink="http://www.w3.org/1999/xlink"
  3.        <text x="10" y="15"
  4.            <tspan dy="5 10 20"
  5.               123 
  6.            </tspan> 
  7.        </text> 
  8. </svg> 

运行效果: 


注:

字形之间的垂直间距现在是如何变化的。

2. 水平定位

要将文本相对定位在x轴上,可以使用dx属性(delta x)。

下面的示例显示了设置dx为30 的效果。

例(请注意,现在第二行文本相对于第一行文本的末尾(不是开头)显示30个像素)

  1. <svg xmlns="http://www.w3.org/2000/svg" 
  2.     xmlns:xlink="http://www.w3.org/1999/xlink"
  3.  
  4.    <text x="20" y="15"
  5.        <tspan>tspan line 1</tspan> 
  6.        <tspan dx="30" dy="10">tspan line 2</tspan> 
  7.    </text> 
  8. </svg> 

运行效果:


如果在dx属性内指定多个数字,则每个数字将应用于元素内的每个字母。

  1. <svg xmlns="http://www.w3.org/2000/svg" 
  2.     xmlns:xlink="http://www.w3.org/1999/xlink"
  3.  <text x="10" y="20"
  4.    <tspan dx="5 10 20">123</tspan> 
  5.  </text> 
  6. </svg> 

运行效果:

还可以设置x属性以固定文本行的x坐标。如果要在彼此下方显示所有未调整的行的列表,这将很有用。这是一个x在三行中设置为10 的示例:

示例

  1. <svg xmlns="http://www.w3.org/2000/svg" 
  2.     xmlns:xlink="http://www.w3.org/1999/xlink"
  3.  
  4.    <text y="20"
  5.        <tspan x="10">tspan line 1</tspan> 
  6.        <tspan x="10" dy="15">tspan line 2</tspan> 
  7.        <tspan x="10" dy="15">tspan line 3</tspan> 
  8.    </text> 
  9. </svg> 

运行效果:


三、样式tspan元素

可以单独设置元素样式。因此,可以使用 元素来设置文本块的样式,以使其不同于其余文本。

  1. <svg xmlns="http://www.w3.org/2000/svg" 
  2.     xmlns:xlink="http://www.w3.org/1999/xlink"><text x="10" y="20"
  3.   Here is a <tspan style="font-weight: bold;">bold</tspan> word. 
  4. </text></svg> 

运行结果


四、基线偏移的上标和下标

可以使用baseline-shiftCSS属性使用元素创建上标和下标 。

这是一个SVG baseline-shift示例,显示了如何:

示例

  1. <svg width="500" height="100"
  2.       <text x="10" y="20"
  3.         Here is a text with  
  4.         <tspan style="baseline-shift: super;">superscript</tspan> 
  5.         and <tspan style="baseline-shift: sub;">subscript</tspan> mixed with normal 
  6.         text. 
  7.       </text> 
  8. </svg> 

运行效果:(注意:firefox可能不支持)


五、总结

本文基于SVG基础,介绍了有关的元素定位,改变不同的属性,实现不一样的位置显示效果。以及实际项目应用中基线偏移的上标和下标的应用。本文运用丰富的效果图展示,能够让读者更好的理解。

欢迎大家积极尝试,有时候看到别人实现起来很简单,但是到自己动手实现的时候,总会有各种各样的问题,切勿眼高手低,勤动手,才可以理解的更加深刻。

代码很简单,希望对你学习有帮助。

 

责任编辑:姜华 来源: 前端进阶学习交流
相关推荐

2020-12-29 09:39:38

元素属性定位

2021-01-01 09:18:48

SVG图像元素

2020-12-04 08:40:29

SVG动画元素

2020-12-08 08:09:49

SVG图标Web

2021-02-26 20:01:57

SVG滤镜元素

2020-12-23 08:12:08

javascriptSVG脚本SVG元素

2021-02-23 06:51:16

SVGstrokeHtml基础

2021-03-26 09:57:51

SVGHtml基础SVG图像

2022-05-13 16:21:38

javascrip脚本SVG

2020-12-15 08:15:34

SVG元素路径

2021-02-05 18:36:15

SVG形状属性

2021-01-04 10:14:42

SVG标签元素

2020-12-11 08:39:14

SVG代码剪切

2021-05-07 14:17:01

JavaScript元素网页

2023-07-30 15:18:54

JavaScript属性

2021-05-18 08:30:42

JavaScript 前端JavaScript时

2023-09-06 14:57:46

JavaScript编程语言

2021-01-26 23:46:32

JavaScript数据结构前端

2021-03-05 18:04:15

JavaScript循环代码

2021-03-09 14:04:01

JavaScriptCookie数据
点赞
收藏

51CTO技术栈公众号