轉抄:http://blog.csdn.net/wjnf012/article/details/54316058
最近碰到了這樣一個問題,設置line-height屬性讓文字垂直居中,發現在PC端肉眼觀察是居中的,但是在移動端(Android)上總是發現文字偏上,所以有以下的研究。
搜索發現有人說在Android上會有2px的向上偏移,但是實踐證明並不是,下面上圖(本來准備制成表格比較起來比較方便,但是發現不能制作表格)
- ios5
上:82px;下:84px; - ios6
上:82px;下:84px; - ios6 plus

上:124px;下:126px; - mi4w

上:118px;下:130px; - vivo
上:58px;下:64px;
經過實際操作發現,iOS系統上上下相差兩個像素(也有可能是我測距離的誤差)
但是Android上相差比較大,而且不同的機型相差數目不一樣
產生原因
問了下技術大神,說是line-height對一部分Android手機不起作用,有自己默認的行高,默認行高為22px(這點我沒有試驗,不知道是否准確)
解決方法
line-height:normal;
padding:10px 0;
目前只發現這個方法,沒有發現其他的方法,有新的方法將更新,歡迎大家指正。
或者:
關於line-height大家應該非常熟悉了吧,就是用來做垂直居中的,屢試不爽,基本上沒有什么問題,但是最近一個項目,測試提了一個bug,看圖吧。

從別處竊的圖,這個問題只有安卓上才能復現,做了demo,發現應該是font-size的問題,你們可以自己試試,font-size為13px或者奇數時,line-height會有一定的偏差,在safari上沒有問題,至於原因,現在還沒找到,等找到了再來補充吧。
解決辦法
雖然原因沒有找到,但是可以大致猜出是安卓上奇數字號導致line-height均分上下邊距的時候出現了偏差,那么,我們就可以通過這方面入手。
既然line-height均分不了,那就拋棄line-height吧,看代碼
很簡單吧,將line-height設為0,用padding來進行填充,完美實現,自測沒什么問題,如果造成其他問題,歡迎留言指出
<meta name="wap-font-scale" content="no">
