SVG文本
<text>
和<tspan>
创建文本
- x和y属性 - 定位标准
- dx和dy属性 - 字形偏移
- style属性 - 设置样式
1 | <svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%"> |
<tspan>
中dy是向下传递的
text和tspan中同时设置dy时,text中的dy属性会被覆盖
垂直居中问题
- text-anchor - 水平居中属性
- dominant-baseline 属性(http://www.w3.org/TR/SVG/text.html#DomainantBaselineProperty)
- 自己模拟
模拟
var box = text.getBBox(); 渲染的盒子
顶线: box.y
中线: box.y + box.height / 2
底线: box.y + box.height
文本基线: y
<textPath>
让文本在指定路径上排列
路径文本
- 使用方法
1 | <path id="path1" d="M 100 200 Q 200 100 300 200 T 500 200" stroke="rgb(0,255,0)" fill="none" /> |
- 布局原理
渲染原理
浏览器会把字符从字体表中查到这个字符要占的宽度charWidth,然后从路径最开始的位置找到了一个点,根据这个宽度,在这个路径经过多少长度之后找到另一个点,这两个点将作为计算的基点,通过这两个基点算出来一个点是这个点到这两个基点的位置在路径上的长度都是一样的,最终算出中间的点将会作一条切线以及法线,在这条法线上会把这个文字对齐到文字中央并且把文字的基线位置对齐到切线的位置,这样就完成了第一个文字的排列。上一个文字排列的时候算出来的三个点中的最后一个点会作为下一次计算的开始的点。
- 定位属性 x,y,dx,dy的作用
x、text-anchor和startOffset属性
- 确定排列起始位置
dx、dy属性
- 切线和法线方向的偏移
1 | <path id="path1" d="M 100 200 Q 200 100 300 200 T 500 200" stroke="rgb(0,255,0)" fill="none" /> |
示例:点击查看
- 脚本控制
setAttributeNS()方法设置xlink:href属性
把文本节点替换为节点
1 | <form> |
示例:点击查看
<a>
插入超链接
- 可以添加到任意的图形上
- xlink:href 指定链接地址
- xlink:title 指定链接提示
- target 指定打开目标
1 | <svg xmlns="http://www.w3.org/2000/svg" width="800" height="600"> |
示例:点击查看
根据慕课网课程整理