项目用经常遇到修改input的placeholder的颜色的需求,这里来看一下placeholder如何用css设置:
原文发布与我的个人博客>>
首先来看一下chrome默认的input样式
<input type="text" placeholder="hello world">
(placeholder)
(input style)
可以发现,placeholder
和input
的默认颜色是有点区别的。现在我们来修改input
的颜色
<input type="text" placeholder="hello world" style="color: red">
(placeholder)
(input)
不难发现color
属性只能改变输入值的颜色,placeholder
的颜色没人任何变化。so,如何来改变placeholder
的颜色。
要改变placeholder
的颜色就要使用到伪类::placeholder
<style>
input::placeholder {
color: green;
}
</style>
<input type="text" placeholder="hello world" style="color: red;">
(placeholder)
(input)
需要注意的是::palceholder
伪类的兼容性,以上是在chrome浏览器的运行结果,同样的代码在IE11中就成了这样
(placeholder - ie11)
(input - ie11)
IE解决方案:
首先IE9及以下不支持placeholder。IE10需要用:-ms-input-placeholder
,并且属性需要加上!important
提高优先级。
<style>
input:-ms-input-placeholder {
color: green !important;
}
</style>
<input type="text" placeholder="hello world" style="color: red;">
(placeholder ie11)
(input ie11)
之后给出其他浏览器的适配方案
/* - Chrome ≤56,
- Safari 5-10.0
- iOS Safari 4.2-10.2
- Opera 15-43
- Opera Mobile >12
- Android Browser 2.1-4.4.4
- Samsung Internet
- UC Browser for Android
- QQ Browser */
::-webkit-input-placeholder {
color: #ccc;
font-weight: 400;
}
/* Firefox 4-18 */
:-moz-placeholder {
color: #ccc;
font-weight: 400;
}
/* Firefox 19-50 */
::-moz-placeholder {
color: #ccc;
font-weight: 400;
}
/* - Internet Explorer 10–11
- Internet Explorer Mobile 10-11 */
:-ms-input-placeholder {
color: #ccc !important;
font-weight: 400 !important;
}
/* Edge (also supports ::-webkit-input-placeholder) */
::-ms-input-placeholder {
color: #ccc;
font-weight: 400;
}
/* CSS Working Draft */
::placeholder {
color: #ccc;
font-weight: 400;
}