前端实现单行垂直居中用的最多的方法可能就是line-height了吧。该属性在pc端和ios手机上效果都很好,可到了安卓手机,有很大几率发生文字上移的现象。
知乎有人分析了导致这一现象的原因,Android浏览器下line-height垂直居中为什么会偏离?大家可以试试文章中的解决方案,反正我试了并没有起作用,即使起作用,也不愿意违背UI的意图去改字体。在网上找了其他几种方案,效果不好说,最好亲自去试一试。
我用着比较靠谱的两个:
- 将字体,高度放大一倍后缩小:
div{ font-size: 24px; // 设置为原来值的两倍 height: 40px; // 设置为原来值的两倍 line-height: 40px; // 设置为原来值的两倍 transform: scale(0.5); transform-origin: 0 0; // 根据实际设置 }
- 使用vertical-align属性居中:
.parent{ display: table; } .child{ display: table-cell; vertical-align: middle; }
检查了一下百度在移动端浏览器上的解决办法,随便找了一个新闻页面。
简单地调了点line-height的值?,我是服了的,估计在ios上兼容不好,手头没有苹果手机,没法看。估计百度应该在苹果上做了单独处理。手动把line-height和height调成一致,果然不居中了。