为什么有时使用 height/line-height 的垂直居中不起作用?

Why sometimes vertical centering with height/line-height doesn't work?

我经常遇到 css 使用 line-height 单行垂直居中的问题。我通常将这种方法用于按钮。我只是设置了高度和行高,没有填充,比如:

height: 44px;
line-height: 44px;

但有时它并不能完全居中。看到这个 fiddle:

https://jsfiddle.net/Lm444sny/1/

我只是想知道它不起作用的原因。文本有点居中,但并不完美。

它依赖于垂直对齐属性。有时当您使用例如图标字体时,符号可以有不同的高度。

使用弹性框可以实现垂直居中的最佳效果:https://css-tricks.com/snippets/css/a-guide-to-flexbox/

取决于字体本身的行高。有的字体下边留白比较多所以好像没对齐

将按钮行高更改为 47px 或根本不使用内部标记。 Chrome 例如,将按钮内的文本与 display flex 对齐是现在垂直居中的最佳方式。 看看这个https://philipwalton.github.io/solved-by-flexbox/demos/vertical-centering/

为什么不改用 flex-box?您可以将 display:flex 应用于按钮,它的内容将是一个弹性项目(在本例中是一个简单的文本)。