请马上登录,朋友们都在花潮里等着你哦:)
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 马黑黑 于 2022-3-15 12:29 编辑
svg 可以非常方便地输出文本,看下面示例,我们可以用在HTML文档中保存并运行这些代码:
<svg width="200" height="40" style="border: 1px solid;">
<text>不识庐山真面目</text>
</svg>
效果如下:
我噻,只见其脚,未见其身!莫非svg的text标签怕丑?非也,svg的旗下标签 text 要定义xy坐标,且文本的y坐标是针对文字的底部基线(baseline),所以我们需要设置一下xy,设置依据与文本大小有关联,y坐标值要大于等于font-size值。上面的代码改装一下:
<svg width="200" height="40" style="border: 1px solid;">
<text x="10" y="25">不识庐山真面目</text>
</svg>
效果就会不一样:
现在,文本上半身下半身都齐了,完美。
我们已经知道,svg是基于图形的,但与canvas画布不同的是,它输出的文本是文本,可以选择、复制。它与画布相似的地方也真不少,拥有给我们带来便利的诸多属性设置,例如:
stroke:边框颜色 fill:填充颜色
现在,我们试着把文字大小弄大一点,然后用以上属性修饰文本效果。我们先用fill给文本填充颜色:
<svg width="500" height="80" style="border: 1px solid;">
<text x="10" y="60" font-size="60" fill="navy">不识庐山真面目</text>
</svg>
效果:
再用 stroke 给文本描边,填充颜色设置为没有:
<svg width="500" height="80" style="border: 1px solid;">
<text x="0" y="60" font-size="60" fill="none" stroke="red">不识庐山真面目</text>
</svg>
效果是酱紫:
接着填充描边一块用,顺带设置一下字体、字重:
<svg width="500" height="80" style="border: 1px solid;">
<text x="10" y="60" font-size="60" fill="navy" stroke="red" font-family="MicrosoftYahei" font-weight="900">不识庐山真面目</text>
</svg>
看看效果:
但作为更倾向于图形特性的svg,与画布一样,文本不能自动折行,这意味着我们要控制每行文本的长度,并学会通过改变text的y坐标值来给文本分行:
<svg width="500" height="160" style="border: 1px solid;">
<text x="10" y="60" font-size="60" fill="navy" stroke="red" font-family="MicrosoftYahei" font-weight="900">
不识庐山真面目
</text>
<text x="10" y="140" font-size="60" fill="navy" stroke="red" font-family="MicrosoftYahei" font-weight="900">
只缘身在此山中
</svg>
效果:
text标签还有两个有趣的位移属性 dx 和 dy,分别用于文字个体水平方向和垂直方向的位移,这里我们测试一下给每一个字设置一下dy值:
<svg width="500" height="160" style="border: 1px solid;">
<text x="10" y="100" font-size="60" fill="navy" dy="-20 -10 10 20 25 -5 -15">不识庐山真面目</text>
</svg>
效果:
OK,先介绍这么多吧。
|