[小程序]设置view中字体水平垂直方向都居中

问题

设置了text-align 和 line-height属性 实现水平和垂直方向居中,在iOS端显示正常居中。但在Android机型特别是小米手机上仅水平居中,垂直方向上会向上偏移。

解决方案

网上大佬表示:

  1. 单纯使用CSS是无法解决的:
    即使解决了也是一种通过微调来实现的hack方法,因为文字在content-area内部渲染的时候已经偏移了,而css的居中方案都是控制的整个content-area的居中
    简单说就是:文字在渲染时本身就是偏移的。
    的确,自己尝试了
    ① view中文字包裹text标签并设置为block属性,用于设置居中布局 —— 不行
    ② 对view使用flex布局,设置内部元素水平垂直方向都居中 —— 但无效果
    (补充: flex 可用于内部多块元素之间的布局设置,属于外部设置。对于块内文字的布局设置这类内部布局,使用flex并无效果,即使设置文字的为block属性)

  1. 大佬认为导致这个问题的本质原因可能是Android在排版计算的时候参考了primyfont字体的相关属性(即HHead Ascent、HHead Descent等),而primyfont的查找是看font-family里哪个字体在fonts.xml里第一个匹配上,而原生Android下中文字体是没有family name的,导致匹配上的始终不是中文字体,所以解决这个问题就要在font-family里显式申明中文,或者通过什么方法保证所有字符都fallback到中文字体。
    简单说就是:Android下 对文字的排版方面没有中文字体,导致渲染出来的不是中文字体。
  2. 根据这2个思路,给出2个解决方案:
    ① 针对Android 7.0+设备:<html>上设置 lang 属性:<html lang="zh-cmn-Hans">,同时font-family不指定英文,如 font-family: sans-serif 。这个方法是利用了浏览器的字体fallback机制,让英文也使用中文字体来展示,blink早期的内核在fallback机制上存在问题,Android 7.0+才能ok,早期的内核下会导致英文fallback到Noto Sans Myanmar,这个字体非常丑。
    ② 针对MIUI 8.0+设备:设置 font-family: miui 。这个方案就是显式申明中文的方案,MIUI在8.0+上内置了小米兰亭,同时在fonts.xml里给这个字体指定了family name:miui,所以我们可以直接设置。

通过上述,自己尝试了下

  1. HTML部分自己设置是 <html lang="zh-CN”>,说明HTML 的lang只要是 zh的大类就行
  2. font-family 我原本设置的PingFang-SC-Regular, PingFang-SC,发现在IOS和三星手机上显示还OK,不过在小米手机上 字体偏上比较明显
    ( 个人觉得,line-height属性在Android 显示会偏上问题,原因是
    ① 字体类型不是中文
    ② 小米手机中文类型需要特别处理,font-family: miui

PS:后来又尝试使用flex布局 控制居中,发现在iOS和Android上显示正常居中了,不清楚是否是小程序后来实现了兼容。

参考文章

Android浏览器下line-height垂直居中为什么会偏离?

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 记得以前某某某天上午被设计师“调戏”了,记忆犹新啊,就是因为一个项目(PC和移动)中的字体问题,纠结了一上午,设计...
    Seven_Star阅读 8,778评论 0 3
  • CSS字体样式属性 font-size:字号大小 font-size属性用于设置字号,该属性的值可以使用相对长度单...
    Arvin_zhea阅读 5,814评论 0 1
  • 大家都知道,在不同操作系统、不同游览器里面默认显示的字体是不一样的,并且相同字体在不同操作系统里面渲染的效果也不尽...
    陈_宣阅读 6,030评论 0 7
  • 一、概念 参考网页字体Serif和Sans-serif的区别及浏览器字体的设置CSS Font知识整理总结 1.F...
    合肥黑阅读 11,532评论 0 12
  • 我是黑夜里大雨纷飞的人啊 1 “又到一年六月,有人笑有人哭,有人欢乐有人忧愁,有人惊喜有人失落,有的觉得收获满满有...
    陌忘宇阅读 12,765评论 28 53

友情链接更多精彩内容