首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >SVG中文本的背景色

SVG中文本的背景色
EN

Stack Overflow用户
提问于 2013-03-19 21:30:13
回答 11查看 119K关注 0票数 120

我想给svg text的背景着色,类似于css中的background-color

我只能找到关于fill的文档,它为文本本身着色

这有可能吗?

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2013-06-01 21:14:52

不这是不可能的,SVG元素没有background-... presentation attributes

为了模拟这种效果,你可以在文本属性后面画一个矩形,用fill="green"或者类似的东西(滤镜)。使用JavaScript,您可以执行以下操作:

代码语言:javascript
复制
var ctx = document.getElementById("the-svg"),
textElm = ctx.getElementById("the-text"),
SVGRect = textElm.getBBox();

var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect");
    rect.setAttribute("x", SVGRect.x);
    rect.setAttribute("y", SVGRect.y);
    rect.setAttribute("width", SVGRect.width);
    rect.setAttribute("height", SVGRect.height);
    rect.setAttribute("fill", "yellow");
    ctx.insertBefore(rect, textElm);
票数 112
EN

Stack Overflow用户

发布于 2015-06-24 05:03:37

你可以使用滤镜来生成背景。

代码语言:javascript
复制
<svg width="100%" height="100%">
  <defs>
    <filter x="0" y="0" width="1" height="1" id="solid">
      <feFlood flood-color="yellow" result="bg" />
      <feMerge>
        <feMergeNode in="bg"/>
        <feMergeNode in="SourceGraphic"/>
      </feMerge>
    </filter>
  </defs>
  <text filter="url(#solid)" x="20" y="50" font-size="50">solid background</text>
</svg>

票数 104
EN

Stack Overflow用户

发布于 2017-01-28 03:58:16

我使用的解决方案是:

代码语言:javascript
复制
<svg>
  <line x1="100" y1="100" x2="500" y2="100" style="stroke:black; stroke-width: 2"/>    
  <text x="150" y="105" style="stroke:white; stroke-width:0.6em">Hello World!</text>
  <text x="150" y="105" style="fill:black">Hello World!</text>  
</svg>

正在放置具有笔划和笔划宽度属性的重复文本项目。笔划应该与背景颜色相匹配,笔划宽度应该足够大,以创建一个“斑点”,在上面写实际的文本。

一点小技巧,有潜在的问题,但对我来说是有效的!

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

https://stackoverflow.com/questions/15500894

复制
相关文章

相似问题

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