【发布时间】:2021-04-19 17:11:39
【问题描述】:
我的目标是使用 react-native-svg 创建一个带有居中文本的椭圆。我在他们的文档中发现了mask 的功能。我试图弄清楚的一件事是创建一个 cutout 效果,类似于它在 CSS 中的做法:
文档展示了如何处理笔画和渐变等操作,但我只想根据文本的大小和形状遮盖椭圆的一部分。有谁知道有没有办法做到这一点?
<Svg width="100%" height="100%" viewBox="0 0 800 300">
<Defs>
<LinearGradient
id="Gradient"
gradientUnits="userSpaceOnUse"
x1="0"
y1="0"
x2="800"
y2="0"
>
<Stop offset="0" stopColor="white" stopOpacity="0" />
<Stop offset="1" stopColor="white" stopOpacity="1" />
</LinearGradient>
<Mask
id="Mask"
maskUnits="userSpaceOnUse"
x="0"
y="0"
width="800"
height="300"
>
<Rect x="0" y="0" width="800" height="300" fill="url(#Gradient)" />
</Mask>
<Text
id="Text"
x="400"
y="200"
fontFamily="Verdana"
fontSize="100"
textAnchor="middle"
>
Masked text
</Text>
</Defs>
<Rect x="0" y="0" width="800" height="300" fill="#FF8080" />
<Use href="#Text" fill="blue" mask="url(#Mask)" />
<Use href="#Text" fill="none" stroke="black" stroke-width="2" />
</Svg>
【问题讨论】:
标签: reactjs react-native svg react-native-svg