CSS 中 SVG 的垂直对齐
Vertical Alignment of SVG in CSS
我对内联 SVG 对齐有疑问。我创建了一个带有一些文本和 SVG 的按钮。虽然当 SVG 至少与文本一样大时对齐工作正常,但当 SVG 高度小于文本时对齐失败。
我创建了一个带有双色背景按钮的测试用例,以指示中间的确切位置。如果你仔细看,你会发现第二种情况没有完全对齐,因为 SVG 的高度小于文本中的高度。
有什么办法可以解决这个问题吗?以其他方式进行(请不要使用 js)?
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 - 或者在带有 align-items
的容器上使用 display:flex
来垂直对齐内容,如下所示:
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
用于水平对齐。
我对内联 SVG 对齐有疑问。我创建了一个带有一些文本和 SVG 的按钮。虽然当 SVG 至少与文本一样大时对齐工作正常,但当 SVG 高度小于文本时对齐失败。
我创建了一个带有双色背景按钮的测试用例,以指示中间的确切位置。如果你仔细看,你会发现第二种情况没有完全对齐,因为 SVG 的高度小于文本中的高度。
有什么办法可以解决这个问题吗?以其他方式进行(请不要使用 js)?
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 - 或者在带有 align-items
的容器上使用 display:flex
来垂直对齐内容,如下所示:
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
用于水平对齐。