安卓移动端line-height垂直居中出现偏移的原因,及解决方法

安卓移动端line-height垂直居中出现偏移的原因,及解决方法,第1张

概述目前在移动端安卓手机上使用line-height属性,让它的值等于height,结果发现是不居中的。出现了一定位置的偏移情况,如果略微只有两三个像素差距是看不出来的。左图中的字号是12px,右图中的行高是26px。仔细观察过上图后,闲话少扯,直接说说我对这个android上line-height问题的一些看法:

目前在移动端安卓手机上使用line-height属性,让它的值等于height,结果发现是不居中的。出现了一定位置的偏移情况,如果略微只有两三个像素差距是看不出来的。

左图中的字号是12px,右图中的行高是26px。仔细观察过上图后,闲话少扯,直接说说我对这个androID上line-height问题的一些看法:

字体大小不要使用奇数字号,带小数点的更不要提了。也就是说被2整除的整数且不可小于12px。尽量不要使用rem或者em的单位,除非你能对字号的把握在每个手机上都能达到第1条的要求。别外,微信小程序上的rpx是动态计算的,可以单独针对这部分使用px。一般只要不是边框贴着文字,一般都还看得过去,在接受的范围之内。如果是边框贴着文字,就是居中了,也不好看啊。

那么,对于小于12像素的居中或者是对居中要求很是严格的需求,这个问题怎么解决?  

把字号内外边距等设置为需求大小的2倍,使用transform进行缩放。只能针对 单个或者是一排的布局进行缩放,如果是父级自适应高度且可展示多行的,使用transform是有问题的。因为transform缩放是不影响页面布局的。把字号内外边距等设置为需求大小的2倍,使用zoom进行缩放,可以完美解决。zoom原本只有IE支持,但现在除了firefox,都已经支持了。是的,firefox不支持。

 

导致line-height偏移的本质原因 : @H_419_33@作者:周祺,来源链接:https://www.zhihu.com/question/39516424/answer/274374076  是AndroID在排版计算的时候参考了primyFont字体的相关属性(即Hhead Ascent、Hhead Descent等),而primyFont的查找是看`Font-family`里哪个字体在Fonts.xml里第一个匹配上,而原生AndroID下中文字体是没有family name的,导致匹配上的始终不是中文字体,所以解决这个问题就要在`Font-family`里显式申明中文,或者通过什么方法保证所有字符都fallback到中文字体。1.针对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.添加border相关属性:
1 border: 1px solID transparent;2 Box-sizing:border-Box;

设计坞官网https://www.wode007.com/sites/73738.HTML

2.采用其它垂直居中方法:

 

总结

以上是内存溢出为你收集整理的安卓移动端line-height垂直居中出现偏移的原因,及解决方法全部内容,希望文章能够帮你解决安卓移动端line-height垂直居中出现偏移的原因,及解决方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1061548.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存