假设我有一个bootstrap按钮,带有一个字体很棒的图标和一些文本:
<div>
<i class='icon icon-2x icon-camera'></i>
hello world
</div>
我如何使文本显示垂直居中? 文本现在与图标的底部边缘对齐:http://jsfiddle.net/V7DLm/1/
假设我有一个bootstrap按钮,带有一个字体很棒的图标和一些文本:
<div>
<i class='icon icon-2x icon-camera'></i>
hello world
</div>
我如何使文本显示垂直居中? 文本现在与图标的底部边缘对齐:http://jsfiddle.net/V7DLm/1/
当前回答
我99%的情况下在文本旁边使用图标,所以我做了全局更改:
.fa-2x {
vertical-align: middle;
}
根据需要将3x, 4x等添加到相同的定义中。
其他回答
如果没有对齐,一个简单的line-height: inherit;通过CSS在特定的i.a a元素有对齐问题可以做的伎俩足够简单。
你也可以使用全局解决方案,由于CSS的特异性略高,它将覆盖FontAwesome的.fa规则,该规则指定line-height: 1而不需要属性上的!important:
i.fa {
line-height: inherit;
}
只要确保上面的全局解决方案不会在你可能使用fontaweesome图标的地方引起任何其他问题。
当使用flexbox时,字体和文字旁边的图标垂直对齐是非常困难的。我尝试了页边距和填充,但这移动了所有项目。我尝试了不同的弯曲对齐,如中心,开始,基线等,没有任何效果。调整图标的最简单和最干净的方法是将其包含的div设置为position: relative;上图:XX;这件事做得很完美。
这个问题几年前就有人问过了。我认为技术已经发生了很大的变化,浏览器的兼容性也更好了。你可以使用垂直对齐,但我认为它的可伸缩性和可重用性较差。我建议使用flexbox方法。
下面是原始海报使用的相同示例,但使用了flexbox。它为单个元素设置样式。如果按钮大小因某种原因而改变,它将继续保持垂直和水平居中。
.button {
border: 1px solid #ccc;
height: 40px;
margin: 60px;
padding: 4px;
display: flex;
justify-content: space-around;
align-items: center;
}
例如:JsFiddle
在考虑了所有建议的选项后,最干净的解决方案似乎是设置行高和垂直对齐:
参见Jsfiddle Demo
CSS:
div {
border: 1px solid #ccc;
display: inline-block;
height: 50px;
margin: 60px;
padding: 10px;
}
#text, #ico {
line-height: 50px;
}
#ico {
vertical-align: middle;
}
这对我来说很有效。
i.fa {
line-height: 100%;
}