svg文本<text>详解

一、基本用法

在SVG中,text的基本用法如下:

<svg>
    <text x="20" y="20">svg文本text</text>
</svg>

其效果如下图所示:

 注意上图中红点的位置坐标即为(20,20)。

可以看到,默认情况下,text使用以下默认属性:

  • 颜色:黑色
  • 字体大小:16px
  • 水平对齐:左对齐
  • 垂直对齐:底基线

二、样式设置

可以对文字的颜色、字体、字体大小、是否粗体、是否有下划线、是否斜体等进行设置。需要注意的是,样式基本与html相同,除了color,svg中使用fill进行颜色设置。

<svg>
    <text x="20" y="20"
        style="font-family: '微软雅黑'; font-size: 24px; fill:red; font-weight:bold; text-decoration:underline;">svg文本text</text>
</svg>

其效果如下图所示:

 三、对齐方式

水平对齐的方式有三种,分别是左对齐、居中对齐、右对齐。其设置的属性是text-anchor,对应的值分别是start、middle、end。默认值是start。

居中对齐的代码如下:

<svg>
    <text x="100" y="100"
        style="text-anchor: middle; font-family: '微软雅黑'; font-size: 24px; fill:green; text-decoration:underline;">svg文本text</text>
</svg>

其效果如下图所示:

 另外,左对齐效果:

右对齐效果:

 

 

垂直对齐设置的属性是dominant-baseline,其情况比较复杂。可选值比较多,比较常用的是:hanging、ideographic、alphabetic、middle、central。

以下代码:

<svg>
    <text dominant-baseline="hanging" x="30" y="20">Hanging</text>
    <text dominant-baseline="ideographic" x="30" y="50">Ideographic</text>
    <text dominant-baseline="alphabetic" x="30" y="80">Alphabetic</text>
    <text dominant-baseline="middle" x="30" y="110">Middle</text>
    <text dominant-baseline="central" x="30" y="140">Central</text>       
</svg>

对应效果图:

 可以看到,hanging基本相当于上对齐。下对齐有ideographic和alphabetic两种,区别是ideographic基线在所有字母下方,而alphabetic在小写字母下方,注意到字母p漏出来了。central和ideographic和hanging的中间,而middle是alphabetic和hanging的中间。

四、多行文本

直接在<text>标签里输入内容,是做不到分行的,需要加入<tspan>标签。

<svg>
    <text x="100" y="30">
        <tspan x="100" y="30">line1 第一行</tspan>
        <tspan x="100" y="60">line2 第二行</tspan>
        <tspan x="100" y="90">line3 第三行</tspan>
    </text>
</svg>

效果如下图所示:

 五、获取选中内容

使用document.getSelection()获取选中的内容。以下代码:

var select = document.getSelection();
console.log(`起始行内容:${select.anchorNode.nodeValue}`);
console.log(`起始行开始位置:${select.anchorOffset}`);
console.log(`结束行内容:${select.focusNode.nodeValue}`);
console.log(`结束行开始位置:${select.focusOffset}`);

将会得到以下效果:

 六、空心文字

可以结合stroke和fill属性制作空心文字。

<svg>
    <text x="100" y="50" style="font-family:'微软雅黑'; font-size: 36px; stroke:red; fill:yellow;">svg文本text</text>
</svg>

效果如下图所示:

 七、文字路径

可以让文字沿一条曲线排列,如下:

<svg>
    <defs>
        <path id="path1" d="M75,20 a1,1 0 0,0 100,0" />
    </defs>
    <text x="10" y="100">
        <textPath xlink:href="#path1">svg文本text svg文本text</textPath>
    </text>
</svg>

效果如下:

 

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值