我有一个SVG图像,我想要将其居中在一个div中。这个div的宽度是900像素。SVG图像的宽度是400像素。SVG图像的margin-left和margin-right都设置为auto。但是不起作用,它就好像左边距是0(默认值)。
有人知道是什么错误吗?
有人知道是什么错误吗?
SVG默认为内联元素。
将display: block
添加到它上面,然后margin: auto
将按预期工作。
或者根据您的布局,您可能希望保持SVG内联,并在父元素上设置text-align: center
。
作为另一种选择,您可以在父元素上使用flex或grid布局来使SVG居中。
之前的回答对我没有用。
但是,向<svg>
标签添加属性preserveAspectRatio="xMidYMin"
就解决了问题。为了使其起作用,还需要指定viewBox
属性。
来源:Mozilla开发者网络
.container {
display: flex;
justify-content: center;
}
然后将 .container
类添加到包含 SVG 的 <div>
元素中即可。 - Esger阅读以上内容后,我发现 SVG 默认是内联的,因此我只需将以下内容添加到 div 中:
<div style="text-align:center;">
对我来说,它起到了作用。
纯粹主义者可能不喜欢这个方法(它是图像而非文本),但在我看来,HTML和CSS在居中方面出了问题,因此我认为这是有道理的。
这些答案都对我没有用。这是我做的方法。
position: relative;
left: 50%;
-webkit-transform: translateX(-50%);
-ms-transform: translateX(-50%);
transform: translateX(-50%);
.container {
display: flex;
justify-content: center;
}
并将包含svg的div添加.container
类。margin: auto
添加到要居中的元素本身,以使其垂直居中。 - S..以上回答只从CSS角度进行了讨论,内容似乎有所不完整。
SVG在视窗中的定位受到两个SVG属性的影响:
<svg viewBox="70 160 800 190" preserveAspectRatio="xMaxYMax meet">
我不得不使用
display: inline-block;
只需要将容器视为 flex,并使用 flex 属性使 svg 项居中:
<div classname='icon'>
<svg>.....</svg>
</div>
.icon{
display:flex;
align-items:center;
justify-content:center;
}
margin: 0 auto;
虽然你说左右都设置为自动,但可能会出现错误。当然,我们不确定,因为你没有展示任何代码。
style.css
文件中。 display: block;
margin: auto;
如果您尝试运行它,您将能够看到svg
现在已经居中对齐。
td
而不是一个div
。 - mathheadinclouds