由于IE7和IE8不支持伪元素的双冒号表示法(例如::after或者::first-letter),并且由于现代浏览器支持单冒号符号(例如:after)以实现向后兼容性,因此我应该仅使用单冒号表示法吗? IE8的市场份额下降到可以忽略不计的水平回到我的代码库中找到/替换?或者我应该包括两者:
.foo:after,
.foo::after { /*styles*/ }
Run Code Online (Sandbox Code Playgroud)
如果我关心IE8用户(可怜的亲戚),单独使用双重似乎很愚蠢.
css css-selectors internet-explorer-8 internet-explorer-7 pseudo-element
在CSS中,可以placeholder使用特定于供应商的伪类和伪元素的组合来在输入中设置文本样式(以获得最佳的跨浏览器覆盖率).
这些都具有相同的基本属性(即:文本样式和颜色声明).
然而,虽然我不可避免地想要应用相同的样式而不管浏览器供应商,但似乎不可能将它们组合成逗号分隔的选择器(就像您希望两个选择器共享的任何其他CSS一样)相同的风格).
作为一个例子,我倾向于使用以下四个选择器来定位占位符样式:
input:-moz-placeholderinput::-moz-placeholderinput:-ms-input-placeholderinput::-webkit-input-placeholder(虽然:-moz-placeholder 被弃用赞成::-moz-placeholder所以目前两者都需要更好的浏览器的支持,这只是发生与Firefox 19发布).
令人沮丧的是,声明和赋予每种(相同)样式会导致CSS中的大量重复.
因此,为了确保占位符文本是右对齐和斜体,我最终会得到:
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;
}
Run Code Online (Sandbox Code Playgroud)
我真正想要做的是将它们组合成一个单独的逗号分隔规则集,如下所示:
input:-moz-placeholder,
input::-moz-placeholder,
input:-ms-input-placeholder,
input::-webkit-input-placeholder{
font-style: italic;
text-align: right;
}
Run Code Online (Sandbox Code Playgroud)
然而,尽管在相当多的时间尝试过,但这似乎永远不会奏效.这让我担心CSS有一些我不理解的基本部分.
有人可以解释为什么会这样吗?