reactjs 在SVG背景顶部添加SVG徽标

drkbr07n  于 2023-01-25  发布在  React
关注(0)|答案(1)|浏览(105)

我想添加一个SVG标志,我有(我也有SVG代码)的顶部一个矩形与辐射背景颜色,也包含一些标题文本,但我不知道如何做到这一点。
对于上下文,我使用的是React-PDF,因此语法略有不同。
目前我有

<Svg width="555" height="80" viewBox="0 0 555 80">
    <Defs>
        <RadialGradient id="header-rectangle" cx="0" cy="0" fr="1">
            <Stop stopColor="#A01858"/>
            <Stop offset="1" stopColor="#87005F"/>
        </RadialGradient>
    </Defs>
    <Rect width="555" height="80" rx="8" fill="url(#header-rectangle)"/>
    <Text style={styles.svg} x={`${555-20}px`} y="50%" textAnchor="end" dominantBaseline="middle">Some title here</Text>
</Svg>

然后,我还有我的SVG徽标(为了简洁起见,这里将其缩短):

<Svg width="80" height="52" viewBox="0 0 80 52" fill="none">
    <Path d="M0 47.6941V37.8042C0... fill="green"/>
    ...
</Svg

我想知道我如何能添加到主件的标志...
我尝试将完整的<Svg>/*logo*/</Svg>放到主部分,但这产生了一个错误:

我也尝试过将所有的<Path>片段移到主块中,而不使用<Svg> Package 器,这在某种程度上 * 确实 * 起作用了,但后来我发现我不知道如何将它们向下和向右移动...
这是一个例子:

<Svg width="555" height="80" viewBox="0 0 555 80">
    <Defs>
        <RadialGradient id="header-rectangle" cx="0" cy="0" fr="1">
            <Stop stopColor="#A01858"/>
            <Stop offset="1" stopColor="#87005F"/>
        </RadialGradient>
    </Defs>
    <Rect width="555" height="80" rx="8" fill="url(#header-rectangle)"/>
    <Text style={styles.svg} x={`${555-20}px`} y="50%" textAnchor="end" dominantBaseline="middle">Some title here</Text>

    <Path d="M0 47.6941V37.8042C0... fill="green"/>
    /* rest of the logo svg paths here */
</Svg>
mnemlml8

mnemlml81#

您可以将徽标打包成一个组,然后对其应用transform

<svg width="555" height="80" viewBox="0 0 555 80">
    <defs>
        <radialGradient id="header-rectangle" cx="0" cy="0" fr="1">
            <stop stop-color="#A01858"/>
            <stop offset="1" stop-color="#87005F"/>
        </radialGradient>
    </defs>
    <rect width="555" height="80" rx="8" fill="url(#header-rectangle)"/>
    <text x="500" y="50%" text-anchor="end" dominant-baseline="middle">Some title here</text>

    <g transform="translate(20,10) scale(0.5 0.5)">
      <path d="M 10,30 A 20,20 0,0,1 50,30 A 20,20 0,0,1 90,30 Q 90,60 50,90 Q 10,60 10,30 z" fill="green" />
    </g>
</svg>

相关问题