(图1)
(图2)
(图3)
(图4)
第1张图是chrome模拟器里的效果。
第2、3张图是两台手机里的效果。
第4张图是按钮的样式。
按钮的高度和行高相等,文字应该垂直居中。
第1张图chrome模拟器中是正确的,第2张图中的效果也基本正常,但第3张图中的文字明显偏上了。
单位试过 rem,也试过 px,都会存在这种情况。
有没有人能分析一下问题的原因?
有没有完全兼容的解决方案?
明确一下我的问题:一行文字,设置成在该行垂直方向居中,PC端正常,移动端有的正常,但有的明显偏上,这个问题是怎么产生的,有没有解决方案?
元素长宽、字体大小先扩大为两倍,再用 scale 缩小为一半大小后的结果,效果确实好了一点,但感觉还是有一点点偏上。
2018.3.6补充
不知道业内的专业名称是怎样的,我自己把前端中的像素模式分为两类:物理像素模式和设备独立像素模式。
物理像素模式:css中的1px永远对应1个物理像素。
设备独立像素模式:css中的1px是1个设备独立像素,设备独立像素最终会被换算成物理像素,1个设备独立像素可能对应1个物理像素,可能对应2个物理像素,也可能对应其他数量的物理像素,这主要跟屏幕的设备像素比(dpr,device pixel ratio)有关。比如,iPhone6 的dpr是2,则在iPhone6中,在设备独立像素模式下,css中的1px对应2个物理像素。
默认情况下,网页都是物理像素模式,一般通过加入后面这行代码来开启设备独立像素模式:<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no">
出现这里提到的垂直居中兼容性问题,可能是浏览器在将设备独立像素换算成物理像素时出现了误差。所以,在没有必要开启设备独立像素模式的情况下,删除上面的那句代码,让浏览器以物理像素模式渲染页面,或许可以避免这个问题。
目前比较有效的解决方法就是transform,放大一倍再缩小一半,但是写起来繁琐而且影响布局。我也想知道有没有什么既好又方便的方法