我有一个SVG,我试图在一个div居中。div的宽度为900px。SVG的宽度为400px。SVG的左边距和右边距设置为auto。不起作用,它就像左距为0一样(默认值)。

有人知道误差是多少吗?


当前回答

上面的答案看起来不完整,因为他们只是从css的角度谈论。

SVG在视口中的定位受到两个SVG属性的影响

viewBox:定义svg要覆盖的矩形区域。 preserveAspectRatio:定义在哪里放置viewBox wrt视口,以及如何在视口改变时拉伸它。

点击这个来自codepen的链接了解详细描述

<svg viewBox="70 160 800 190" preserveAspectRatio="xMaxYMax meet">

其他回答

读了上面的内容,svg默认是内联的,我只是在div中添加了以下内容:

<div style="text-align:center;">

这招对我很管用。

纯粹主义者可能不喜欢它(这是一张图片,不是文本),但在我看来,HTML和CSS在居中位置上搞砸了,所以我认为这是合理的。

我必须使用

display: inline-block;

只需将容器视为flex,并将svg项以flex属性居中即可:

<div classname='icon'>
  <svg>.....</svg>
</div>

.icon{
  display:flex;
  align-items:center;
  justify-content:center;
 }
<div align="center">
  /* svg code */
</div>

这个代码中心SVG在div元素。

HTML:

<div class="wrap-center">
    <svg width="20px" height="20px"></svg>
</div>

CSS:

.wrap-center {
    display: flex;
    justify-content: center;
    align-items: center;
}