2017 / 08 / 16
by John Yuan

移动端 Placeholder 的 CSS 兼容性问题小结

在做移动端混合应用开发时,发现 Input 的 Placeholder 的样式在某些老旧机型的 Weibview(AppleWebkit/534.30) 上渲染异常,在此记录遇到的两个坑和相应的解决办法。

一、文字垂直居中

这是一个在老旧机型上比较常见的问题,一开始以为只要把 Placeholder 的行高(line-height) 设置来与 Input 同高就行了,可是实际却发现并没有什么卵用。最终的解决办法如下:

input {
	line-height: normal;
}

只需要把 Input 的行高(line-height) 设置成 normal 就行了,而设置成其他任何带单位(rem, px …)的值等均无效,具体请参考这个答案

二、文字居右显示

这个问题倒是没有第一个问题那么常见,具体的复现场景是:当 Input 的 text-alignright 时,Placeholder 的文字在某些老旧的机型上并不居右显示,而是仍然向左对其。

找了好久才找到的解决办法如下:

input::placeholder, input::-webkit-input-placeholder {
	text-align: right;
	direction: rtl;
}

起主要作用的是 direction: rtl 这行代码,具体请参考这个答案