在CSS中,可以使用供应商特定的伪类和伪元素(以获得最佳跨浏览器覆盖范围)来样式化输入框内的placeholder
文本。
这些都共享相同的基本属性(即文本样式和颜色声明)。
然而,虽然我希望无论浏览器供应商如何都能应用相同的样式,但似乎不可能将它们组合成逗号分隔的选择器(就像您想要两个选择器共享相同样式的任何其他CSS一样)。
例如,我倾向于使用以下四个选择器来定位占位符样式:
input:-moz-placeholder
input::-moz-placeholder
input:-ms-input-placeholder
input::-webkit-input-placeholder
(尽管:-moz-placeholder
正在被弃用,取而代之的是::-moz-placeholder
,但这仅发生在FireFox 19发布时,因此目前需要两者以获得更好的浏览器支持。)
因此,为了确保占位文本右对齐和斜体,我最终会得到以下代码:
input:-moz-placeholder{
font-style: italic;
text-align: right;
}
input::-moz-placeholder{
font-style: italic;
text-align: right;
}
input:-ms-input-placeholder{
font-style: italic;
text-align: right;
}
input::-webkit-input-placeholder{
font-style: italic;
text-align: right;
}
我真正想做的是将它们合并为一个逗号分隔的规则集,如下所示:
input:-moz-placeholder,
input::-moz-placeholder,
input:-ms-input-placeholder,
input::-webkit-input-placeholder{
font-style: italic;
text-align: right;
}
然而,尽管我尝试了很多次,这似乎从未奏效。这让我担心自己可能没有理解CSS的一些基本部分。有人能解释为什么会发生这种情况吗?
:-moz-placeholder
伪类最近才被弃用(请参见 https://developer.mozilla.org/en-US/docs/Web/CSS/:-moz-placeholder),随着 FireFox 19 的推出,所以目前必须同时使用:-moz-placeholder
和它的双冒号继承者::-moz-placeholder
,以确保最佳的浏览器覆盖率。 - johnkavanaghinput::-webkit-search-cancel-button
,并继续应用样式,但是如果加入一个伪类,例如input::-webkit-search-cancel-button:hover
,那么它就跳过整个声明。真是疯狂! - jdunning