2025年12月16日 Tags: CSS
-webkit-text-stroke使用该方式的缺点是描边区域会占据文字区域,因为描边的中心点是从文字边界开始的,往外扩展描边的一半宽度,往内扩展描边的一半宽度,往内自然就占据了文字本身。
解决方式是可以使用 paint-order ,这是一个新特性,兼容性不是很好。
先描边,再填充。同时将 -webkit-text-stroke 宽度设置为想要描边的两倍。
paint-order: stroke fill;
这两种方案的整体思路都是:设置两个文本,一个主要设置描边,一个主要设置文字,然后将后一个文字叠加到前一个文字上。同样描边需要设置成想要描边的两倍。
示例代码:
<svg width="26" height="21" v-show="target1 > 0">
<text x="2" y="16"
fill="#FFFFFF"
stroke="rgba(155, 130, 255, 1)"
stroke-width="4"
stroke-linejoin="round"
stroke-linecap="round"
font-size="18"
font-family="Arial">
</text>
<text x="2" y="16"
fill="#FFFFFF"
font-size="18"
font-family="Arial">
</text>
</svg>
text-shadow 不太推荐,因为画出来的效果不太精确,字体本身的形状一般都不是特别规则。
推荐文章: