首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >tspan元素的背景色

tspan元素的背景色
EN

Stack Overflow用户
提问于 2011-12-30 09:12:35
回答 2查看 12.8K关注 0票数 10

有没有可能给SVG <tspan>元素背景颜色?如果没有,模拟它的最好方法是什么?

我的目标是赋予文本背景颜色,我认为填充<tspan>元素会很完美-它们已经“勾勒”了表示多行文本中线条的文本块(<tspan>元素)。

我正在使用的示例:

代码语言:javascript
复制
<text x="100" y="100" font-size="30">
  <tspan>hello</tspan>
  <tspan x="100" dy="1.2em">world</tspan>
</text>

我尝试了“填充”属性,但它似乎影响文本的填充(颜色),而不是它后面的区域:

代码语言:javascript
复制
<tspan fill="yellow">hello</tspan>

我还尝试通过CSS设置背景颜色:

代码语言:javascript
复制
<style type="text/css">tspan { background-color: yellow }</tspan>

不能工作的..but (至少在Chrome17和Firefox12中)。

<g> (或<g>中的文本本身)中使用"fill“对tspan进行包装也不起作用:

代码语言:javascript
复制
<g fill="yellow"><tspan>hello</tspan></g>
<tspan><g fill="yellow">hello</g></tspan>

除了在同一位置创建一个<rect>元素--这是我想要避免的--还有其他方法可以实现这一点吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-30 22:18:59

rect可能是最好的方法(假设您只处理最简单的文本形式)。

在SVG 1.1中,tspan本身没有“背景”,背景是在tspan之前绘制的任何内容。有许多情况需要考虑,例如tspan位于具有圆形状的textPath内的情况。还要注意的是,它并不是在所有情况下都像连续矩形那样简单,由于变换、字形定位等原因,单个tspan可以倾斜、旋转和划分为几个相交和不相交的形状。

我还能想到另一种不用脚本就能做到这一点的方法,但是你需要提前知道字符串的宽度(比如使用等宽字体)。如果你有,那么你可以添加另一个tspan元素,将它放在文档中的另一个tspan之前,并给它与你想要给它一个“背景”的tspan相同的x,y位置。

否则,实现这一点的方法就是编写脚本,并添加矩形(或带有类似嗯的字体的tspan)。

票数 6
EN

Stack Overflow用户

发布于 2011-12-30 18:55:37

SVG不支持直接指定图像背景color...but,可以调整viewBox属性的四个值(复杂)。我知道这是你想要避免的事情,但是CSS帮不了你。

对于旋转文本,您可以使用getBBox和getCTM...it,这将给您带来优势。示例:http://srufaculty.sru.edu/david.dailey/svg/getCTM.svg

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8675223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档