CSS中SVG的垂直对齐

时间:2016-03-12 19:42:16

标签: html css svg alignment vertical-alignment

我遇到内联SVG对齐问题。我创建了一个带有一些文本和SVG的按钮。当SVG高度小于文本时,当SVG至少与文本一样大时,对齐可以正常工作。

我创建了一个带有双色背景按钮的测试用例,以指示中间的确切位置。你可以看一下,如果你看得更近,第二种情况没有完全对齐,因为SVG的高度小于文本的高度。

有什么方法可以解决这个问题吗?以其他方式做(请不要js)?

测试用例:https://goo.gl/KYDKGH

1 个答案:

答案 0 :(得分:26)

jsfiddle 1 - 你可以在容器上使用position:relative,在这些对象上使用position:absolute

  position: absolute;
  top: 50%;
  -webkit-transform: translateY(-50%);
  -ms-transform: translateY(-50%);
  transform: translateY(-50%);
  left: 0;
  right: 0;
  margin: auto;
  text-align: center;

top: 50%将对象移动到容器的垂直中心,选择对象的顶部作为参考(而不是其中心),因此transform: translateY将其向上移动50%的距离让它准确地放在容器的中间(由物体中心)。

ps:text-align:center; left:0; right:0;margin:auto用于水平对齐。

jsfiddle 2 - 或者在display:flex的容器上使用align-items来垂直对齐内容,如下所示:

  display: -webkit-flex; /* Safari */  
  display: flex;
  -webkit-align-items: center; /* Safari 7.0+ */
  align-items: center;
  -webkit-justify-content: center;
  justify-content: center;

ps:justify content用于水平对齐。

相关问题