我想在深色背景上有一块黑色的文字在它的外面有白色的光晕。虽然CSS中的default drop shadow filter(如filter: drop-shadow(2px 2px 2px black)
)正式应该支持“传播半径”第四个属性,但对该属性的支持基本上不存在。如果没有这种额外的传播,阴影将不足以让文本被读取。SVG过滤器没有显示在Firefox中,在Chrome中正常工作
因此,我决定在SVG标签中定义我自己的过滤器,包括扩展操作以实现额外传播,并将其应用于文本。该过滤器在Chrome中运行正常,但导致文本在Firefox中完全不可见(均在Ubuntu 14.04下测试过)。根据caniuse.com(通常非常可靠,我找到了),Firefox应该支持过滤器非常好。
的HTML代码与SVG滤波器:
<svg xmlns="http://www.w3.org/2000/svg">
<defs>
<filter id="my-drop-shadow" x="0" y="0" width="200%" height="200%">
<feColorMatrix type="matrix" values=
"0 0 0 0 1
0 0 0 0 1
0 0 0 0 1
0 0 0 1 0"/>
<feMorphology operator="dilate" radius="2" />
<feGaussianBlur stdDeviation="2" in="coloredOut" result="coloredBlur"/>
<feMerge>
<feMergeNode in="coloredBlur"/>
<feMergeNode in="SourceGraphic"/>
</feMerge>
</filter>
</defs>
</svg>
<p>Hello there.</p>
的CSS:在Chrome
body {
color: #000; background: #002;
font-family: serif; font-size: 30px;
font-weight: bold;
}
p {
-webkit-filter: url(#my-drop-shadow);
filter: url(#my-drop-shadow);
}
结果(版本46.0.2490.80(64位)):
Firefox上的结果(版本42.0):
我已经把上面的代码中working CodePen(编辑:请注意,我现在已经更新了CodePen以反映@ RobertLongson的答案,它的工作原理;但为什么这不是完整的答案)。
任何想法?错字我没有发现在我的SVG代码?
感谢察觉的!事实上,当我修复它时,codepen示例正常运行。但是,在我原来的代码中,它不会...将在适当的时候进行调查和接受。 – EelkeSpaak