假设我有一个bootstrap按钮,带有一个字体很棒的图标和一些文本:

<div>
    <i class='icon icon-2x icon-camera'></i>
    hello world
</div>

我如何使文本显示垂直居中? 文本现在与图标的底部边缘对齐:http://jsfiddle.net/V7DLm/1/


当前回答

这个问题几年前就有人问过了。我认为技术已经发生了很大的变化,浏览器的兼容性也更好了。你可以使用垂直对齐,但我认为它的可伸缩性和可重用性较差。我建议使用flexbox方法。

下面是原始海报使用的相同示例,但使用了flexbox。它为单个元素设置样式。如果按钮大小因某种原因而改变,它将继续保持垂直和水平居中。

.button {
    border: 1px solid #ccc;
    height: 40px;
    margin: 60px;
    padding: 4px;
    display: flex;
    justify-content: space-around;
    align-items: center;
}

例如:JsFiddle

其他回答

尝试设置你的图标高度:100%

您不需要对包装器做任何操作(比如,您的按钮)。

这需要字体Awesome 5。不确定它是否适用于旧的FA版本。

.wrap svg {
    height: 100%;
}

注意,图标实际上是svg图形。

Demo

当使用flexbox时,字体和文字旁边的图标垂直对齐是非常困难的。我尝试了页边距和填充,但这移动了所有项目。我尝试了不同的弯曲对齐,如中心,开始,基线等,没有任何效果。调整图标的最简单和最干净的方法是将其包含的div设置为position: relative;上图:XX;这件事做得很完美。

我99%的情况下在文本旁边使用图标,所以我做了全局更改:

.fa-2x {
  vertical-align: middle;
}

根据需要将3x, 4x等添加到相同的定义中。

这个问题几年前就有人问过了。我认为技术已经发生了很大的变化,浏览器的兼容性也更好了。你可以使用垂直对齐,但我认为它的可伸缩性和可重用性较差。我建议使用flexbox方法。

下面是原始海报使用的相同示例,但使用了flexbox。它为单个元素设置样式。如果按钮大小因某种原因而改变,它将继续保持垂直和水平居中。

.button {
    border: 1px solid #ccc;
    height: 40px;
    margin: 60px;
    padding: 4px;
    display: flex;
    justify-content: space-around;
    align-items: center;
}

例如:JsFiddle

对我来说,只要让元素显示网格,并对齐内容就可以完美地工作。简单的解决方案。

.yourfontawesome<i>Element{
display: grid;
align-content: center;
}