SVG:textPath深入理解
2017-05-08 17:28
357 查看
转自:http://www.cnblogs.com/anrainie/p/6003197.html
SVG的文本可以沿着一条自定义的Path来排布,比如曲线、圆形等等,使用方式如下所示(来源MDN):
效果如下所示:
使用很简单,在<defs>下定义一个path,在<text>元素下添加一个textPath引用,即可达到效果。
我们来对代码做一点儿修改,给text元素添加x和y:
效果变成了下面这样:
可以注意到,text并没有进行简单的平移操作(相对于原位置向x方向移动100px,y方向移动100px)。
这要如何理解呢?
原因很简单,text的坐标系被修改了,没有加入textPath之前,text处于一个直角坐标系下,x轴和y轴是两条相互垂直的直线。
加入textPath之后,text的坐标系有如下性质:
1、坐标系的x轴为path;
2、坐标系的y轴在x轴的任意点上,方向都不一致,但是必然是该点对于x轴切线的垂直线。
疑问:加入textPath后text的坐标系是怎么看的?
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轴切线的垂直线。
疑问:加入textPath后text的坐标系是怎么看的?
相关文章推荐
- SVG:textPath深入理解
- 深入理解PATH CLASSPATH
- svg 和vml深入了解(路径path&shape)
- 深入理解node.js之path模块
- 深入理解SVG坐标体系和transformations- viewport, viewBox,preserveAspectRatio
- 深入理解SVG坐标体系和transformations- viewport, viewBox,preserveAspectRatio
- 深入探讨、理解Java的CLASSPATH
- 深入理解svg的描边
- HTML相对路径(Relative Path)和绝对路径(Absolute Path)深入理解
- SVG中text沿path居中
- 深入理解TextView实现Rich Text--在同一个TextView设置不同字体风格
- 通过实例深入理解HTML5/CSS3/SVG/WebGL的技术本质
- 深入理解iOS API系列(一) textField:shouldChangeCharactersInRange:replacementString:
- 深入理解Oracle Universal Installer (OUI) Text
- 深入理解TextView实现Rich Text--在同一个TextView设置不同字体风格
- CSS vertical-align的深入理解(二)之text-top篇
- 深入理解three.js对svg的支持(二):SVGRenderer
- 深入理解DOM节点类型第二篇——文本节点Text
- 深入理解three.js对svg的支持(一):SVGLoader
- 深入理解Oracle Universal Installer (OUI) Text