SVG:textPath深入理解

简介: SVG的文本可以沿着一条自定义的Path来排布,比如曲线、圆形等等,使用方式如下所示(来源MDN): We go up, then we go down, then up again   效果如下所示:   使用很简单,在下定义一个path,在元素下添加一个textPath引用,即可达到效果。

SVG的文本可以沿着一条自定义的Path来排布,比如曲线、圆形等等,使用方式如下所示(来源MDN):

<svg viewBox="0 0 1000 300"
     xmlns="http://www.w3.org/2000/svg" 
     xmlns:xlink="http://www.w3.org/1999/xlink">
  <defs>
    <path id="MyPath"
          d="M 100 200 
             C 200 100 300   0 400 100
             C 500 200 600 300 700 200
             C 800 100 900 100 900 100" />
  </defs>

  <use xlink:href="#MyPath" fill="none" stroke="red"  />

<text font-family="Verdana" font-size="42.5"> <textPath xlink:href="#MyPath"> We go up, then we go down, then up again </textPath> </text>
  <!-- Show outline of the viewport using 'rect' element -->
  <rect x="1" y="1" width="998" height="298"
        fill="none" stroke="black" stroke-width="2" />
</svg>

 

效果如下所示:

 

使用很简单,在<defs>下定义一个path,在<text>元素下添加一个textPath引用,即可达到效果。

我们来对代码做一点儿修改,给text元素添加x和y:

 <text x=100 y=100  font-family="Verdana" font-size="42.5">
    <textPath xlink:href="#MyPath">
      We go up, then we go down, then up again
    </textPath>
  </text>

 

效果变成了下面这样:

 

可以注意到,text并没有进行简单的平移操作(相对于原位置向x方向移动100px,y方向移动100px)。

这要如何理解呢?

原因很简单,text的坐标系被修改了,没有加入textPath之前,text处于一个直角坐标系下,x轴和y轴是两条相互垂直的直线。

加入textPath之后,text的坐标系有如下性质:

1、坐标系的x轴为path;

2、坐标系的y轴在x轴的任意点上,方向都不一致,但是必然是该点对于x轴切线的垂直线

 

目录
相关文章
|
5月前
|
前端开发
深入理解CSS中的line-height的使用
深入理解CSS中的line-height的使用
|
7月前
|
容器
css3的text(文本)
css3的text(文本)
25 0
|
9月前
|
JavaScript
SVG 文本(一)text、tspan 的基本使用
SVG 文本(一)text、tspan 的基本使用
165 0
|
11月前
|
前端开发 JavaScript API
css 里面的 content 属性你有注意过吗?
content 属性是用来在元素中插入内容的,它只能用在 ::before 和 ::after 这两个伪元素上,它的值可以是一个字符串,也可以是一个图片,还可以是一个计数器。
198 0
|
前端开发
CSS Content 属性 新发现
CSS Content 属性 新发现
CSS Content 属性 新发现
|
前端开发
CSS 文字装饰 text-decoration & text-emphasis
CSS 文字装饰 text-decoration & text-emphasis
140 0
CSS 文字装饰 text-decoration & text-emphasis
|
前端开发
CSS - List-style
CSS - List-style
71 0
CSS - List-style
|
前端开发 JavaScript 小程序
SVG格式的Icon,用了你就知道有多香
继阿里的iconfont之后,字节跳动也出品了自己的矢量图标库,可以实现根据单一SVG源文件变换出多种主题, 具备丰富的分类、更轻量的代码和更灵活的使用场景。
427 0
SVG格式的Icon,用了你就知道有多香
|
Web App开发 JavaScript 前端开发
html img Src base64 图片显示
大家可能注意到了,网页上有些图片的src或css背景图片的url后面跟了一大串字符。 比如:data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAA...
4520 0
|
编解码 JavaScript 前端开发
06.HTML5(SVG 和 canvas)
什么是SVG? SVG 指可伸缩矢量图形 (Scalable Vector Graphics) SVG 用于定义用于网络的基于矢量的图形 SVG 使用 XML 格式定义图形 SVG 图像在放大或改变尺寸的情况下其图形质量不会有损失 SVG 是万维网联盟...
1033 0