Chrome 支持元素上的占位符属性input[type=text](其他人可能也支持)。
input[type=text]
但是以下 CSS 对占位符的值没有任何影响:
input[placeholder], [placeholder], *[placeholder] { color: red !important; } <input type="text" placeholder="Value">
但Value仍将保留grey而不是red。
Value
grey
red
有没有办法改变占位符文本的颜色?
存在三种不同的实现:伪元素、伪类和空。
::-webkit-input-placeholder
:-moz-placeholder
::-moz-placeholder
:-ms-input-placeholder
::placeholder
Internet Explorer 9 及更低版本根本不支持该placeholder属性,而Opera 12 及更低版本不支持任何用于占位符的 CSS 选择器。
placeholder
关于最佳实现的讨论仍在继续。请注意,伪元素就像Shadow DOM中的真实元素。一个padding上input不会得到相同的背景颜色与伪元素。
padding
input
用户代理需要忽略带有未知选择器的规则。请参阅选择器级别 3:
包含无效选择器的一组选择器无效。
所以我们需要为每个浏览器制定单独的规则。否则整个组将被所有浏览器忽略。
::-webkit-input-placeholder { /* WebKit, Blink, Edge */ color: #909; } :-moz-placeholder { /* Mozilla Firefox 4 to 18 */ color: #909; opacity: 1; } ::-moz-placeholder { /* Mozilla Firefox 19+ */ color: #909; opacity: 1; } :-ms-input-placeholder { /* Internet Explorer 10-11 */ color: #909; } ::-ms-input-placeholder { /* Microsoft Edge */ color: #909; } ::placeholder { /* Most modern browsers support this now. */ color: #909; } <input placeholder="Stack Snippets are awesome!">
opacity: 1
em
email
search
-webkit-appearance
-moz-appearance
[type="search"] { -moz-appearance: textfield; -webkit-appearance: textfield; appearance: textfield; }