Android文字图片无法居中对齐的三个解决方法

在一些项目中会碰到文字和图片无法居中,即使采用flex或绝对定位(top:-50%, tranform:translateY(50%)仍然无法解决。

这个问题的根本原因在于Android对大部分的非sans-serif字体支持不友好,如Helvetica,导致文字在组件内部(如span,label)就不居中。
文字在组件内部都不居中了,自然在外面怎么处理都是无法对齐了。

三个解决办法:规避或局部修改字体

  1. 都使用图片代替。字体图片虽然无法居中对齐,但幸运的是只有很少地方会碰到。(有人会问把图片改为字体图标呢?没试过,本质是svg,应该不能)
  2. 简化设计,涉及对齐的都规避掉。如去掉图片、文字容器有上下边框则一定要去掉
  3. 局部修改字体(不完美,只能作最终方案),对文字的直接容器新增二个属性, lang 和 font-family

<span lang="zh-cmn-Hans" style="font-family: -apply-system-font, sans-serif">文字</span>

但是sans-serif和helvetica字体的颜色是不一样的,所以可以增加一个透明度opacity为0.8会比较接近helvetica了,故最终的方案是


<span lang="zh-cmn-Hans" style="font-family: -apply-system-font, sans-serif; opacity:0.8">文字</span>

参考文章(原文是对整体的html进行修改,其实局部修改就可以了):

Android浏览器下line-height垂直居中为什么会偏离? - 周祺的回答 - 知乎

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。