将 SVG 居中放在 div 中

Posted

技术标签:

【中文标题】将 SVG 居中放在 div 中【英文标题】:centering an SVG inside a div 【发布时间】:2017-11-07 21:25:24 【问题描述】:

我想在 position:fixed div 中显示 SVG 图像。我有

<div class="main">
  <svg class="svg" viewBox="0 0 180 100">
    <rect   fill="#003300"></rect>
  </svg>
</div>

风格

.main 
  position:fixed;
  left: 100px;
  height: 100%;
  width:100%;
  background: #33AAAA;


.svg 
  display: block;
  height: 100%;
  width: 100%;
  position:static;

我想将 SVG 水平和垂直居中。我有一个奇怪的行为。更改浏览器窗口的大小,表明当 svg 小于可用宽度时,它被奇怪地放置。例如: 左边比右边多。

Codepen(包括 CSS 重置):Codepen

【问题讨论】:

你还剩:100px;在主课上。这就是为什么你的 svg 左边是空的。 这不是重点。我想将深绿色矩形放在浅色矩形的中心。也许左派有事可做…… 答案可能就在那里https://***.com/questions/41822510/center-an-svg-inside-a-div?rq=1 我正在测试它 How do I center an SVG in a div?的可能重复 【参考方案1】:

看起来很像,因为您的main 类中有left: 100px。如果你把它拿出来,它就会正确居中。

这是应该工作的主要类:

.main 
  position:fixed;  
  left:100px;
  height: 100%;
  right: 0;
  top:0;
  bottom:0;
  background: #33AAAA;

【讨论】:

是的,但我不想让浅绿色填充整个视口。我想在左边留一些空间来做其他事情 在这种情况下,请查看我编辑的答案。如果您将 main 类调整为该类,那应该可以工作。【参考方案2】:

您将宽度设置为 100%,然后将其移动 100 像素。宽度仍按 100% 宽度计算。要以您想要的方式居中,您需要从宽度中减去 100px 或以不同的方式嵌套。

.main 
  position:fixed;  
  left:100px;
  height: 100%;
  width:calc(100% - 100px);
  background: #33AAAA;

【讨论】:

谢谢。我正在弄清楚:)

以上是关于将 SVG 居中放在 div 中的主要内容,如果未能解决你的问题,请参考以下文章

在 div 中居中 toastr 通知

如何让一个img在div中居中,而img的宽度可能比div还大

如何在 HTML/CSS 中居中一组图像?

在引导程序中居中表单不起作用[重复]

img在div中居中的问题

如何让DIV层在网页中居中显示