我有一个svg
,其中包含一个rect
,它的大小较小。我希望rect
在svg
内水平对齐。以下内容似乎无效:
<svg width="400"
height="110"
style="background: grey;
display: flex;
justify-content: flex-end"
>
<rect width="200"
height="50"
style="fill:rgb(0,0,255);
stroke-width:3;
stroke:rgb(0,0,0)"
/>
</svg>
用于flex
的显示justify-content
和svg
不起作用。我需要了解两件事:
flex
样式没有应用到svg
?rect
对准svg
的右侧?谢谢。
答案 0 :(得分:1)
使用transform: translate();
到rect
<h3>right up</h3>
<svg width="400" height="110" style="background: grey; display: flex; justify-content: flex-end">
<rect width="200" height="50" style="fill:rgb(0,0,255);stroke-width:3;stroke:rgb(0,0,0);transform: translate(49.5%,2%);" />
</svg>
<h3>right down</h3>
<svg width="400" height="110" style="background: grey; display: flex; justify-content: flex-end">
<rect width="200" height="50" style="fill:rgb(0,0,255);stroke-width:3;stroke:rgb(0,0,0);transform: translate(49.5%,52%);" />
</svg>
<h3>right center</h3>
<svg width="400" height="110" style="background: grey; display: flex; justify-content: flex-end">
<rect width="200" height="50" style="fill:rgb(0,0,255);stroke-width:3;stroke:rgb(0,0,0);transform: translate(49.5%,30%);" />
</svg>
修改
使用
x="" y=""
<h3>right up</h3>
<svg width="400" height="110" style="background: grey; display: flex; justify-content: flex-end">
<rect width="200" height="50" x="198" y="2" style="fill:rgb(0,0,255);stroke-width:3;stroke:rgb(0,0,0);" />
</svg>
答案 1 :(得分:1)
SVG没有浮点,请对齐html中的对齐元素。
所以您应该使用
transform:translate();
或者在制作svg时,您可以使用x和y坐标给出位置。
<svg width="400" height="110" style="background: grey;">
<rect width="200" height="50" x="197" y="3" style="fill:rgb(0,0,255);stroke-width:3;stroke:rgb(0,0,0)" />
</svg>
答案 2 :(得分:0)
在SVG中,与HTML相比,您只能使用非常limited number of CSS properties。因此,SVG元素对display:flex
一无所知。
因此,在您的示例中,<rect>
只是忽略了它不理解的CSS规则。
svg {
background: grey;
display: flex; /* Has no effect because <rect> doesn't understand display: flex */
justify-content: flex-end; /* Has no effect because <rect> doesn't understand justify-content: flex-end */
}
rect {
fill: rgb(0, 0, 255);
stroke-width: 3;
stroke: rgb(0, 0, 0);
}
<svg width="400" height="110">
<rect width="200" height="50"/>
</svg>
translate(
<x> [<y>]
)转换函数将对象移动x和y。如果未提供y,则假定为零。
svg {
background: grey;
}
rect {
fill: rgb(0, 0, 255);
stroke-width: 3;
stroke: rgb(0, 0, 0);
}
<svg width="400" height="110">
<rect width="200" height="50" transform="translate(197,0)"/>
</svg>
此属性确定矩形的x坐标。
值类型:
<length>|<percentage>
svg {
background: grey;
}
rect {
fill: rgb(0, 0, 255);
stroke-width: 3;
stroke: rgb(0, 0, 0);
}
<svg width="400" height="110">
<rect width="200" height="50" x="197"/>
</svg>