【发布时间】:2016-04-14 02:07:25
【问题描述】:
我正在尝试使用 feFlood 过滤器将背景颜色仅应用于 text 元素中的一个单词。
发生的情况是洪水正在填充所有父元素,甚至隐藏了一些文本。
DEFS
<filter x="0" y="0" width="1" height="1" id="colorMe">
<feFlood flood-color="red"/>
<feComposite in="SourceGraphic"/>
</filter>
风格
.colorMe {
filter: url(#colorMe);
fill: #ccc;
}
text{
fill: #fff;
font: 40px Verdana, Helvetica, Arial, sans-serif;
}
由于我没有将 x,y,width,height 包含在泛洪中,我认为它只会填充 tspan - 很难包含这些,因为该类是动态添加到各种大小的 tspan 元素上的
有没有办法为一个单词添加背景颜色?
下面的代码sn-p和here's a fiddle too
所有代码
<?xml version="1.0"?>
<svg width="450" height="40" viewBox="0 0 450 40"
xmlns="http://www.w3.org/2000/svg" version="1.1">
<defs>
<filter x="0" y="0" width="1" height="1" id="colorMe">
<feFlood flood-color="red"/>
<feComposite in="SourceGraphic"/>
</filter>
</defs>
<style>
.colorMe {
filter: url(#colorMe);
fill: #ccc;
}
text{
fill: #fff;
font: 40px Verdana, Helvetica, Arial, sans-serif;
}
</style>
<text x="15" y="30">You are
<tspan class="colorMe">not</tspan>
me
</text>
</svg>
【问题讨论】:
-
filters即使在 2016 年也对tspan不友好,需要两个text元素,但是根据经验,有时彩色的text看起来会稍微错位,具体取决于浏览器和字体。跨度> -
我了解到
<tspan>s 基本上是二等公民,我尽可能避免他们。即使在 2022 年,它们上面的transform、filters等内容在某些浏览器中也会出现问题。如果您遇到交叉兼容性问题并且您正在使用 tspan,那可能就是问题所在。