相关疑难解决方法(0)

为什么不可能将特定于供应商的伪元素/类组合到一个规则集中?

在CSS中,可以placeholder使用特定于供应商的伪类和伪元素的组合来在输入中设置文本样式(以获得最佳的跨浏览器覆盖率).

这些都具有相同的基本属性(即:文本样式和颜色声明).

然而,虽然我不可避免地想要应用相同的样式而不管浏览器供应商,但似乎不可能将它们组合成逗号分隔的选择器(就像您希望两个选择器共享的任何其他CSS一样)相同的风格).

作为一个例子,我倾向于使用以下四个选择器来定位占位符样式:

  • input:-moz-placeholder
  • input::-moz-placeholder
  • input:-ms-input-placeholder
  • input::-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有一些我不理解的基本部分.

有人可以解释为什么会这样吗?

css css-selectors pseudo-class css3 pseudo-element

72
推荐指数
2
解决办法
5392
查看次数

当浏览器不支持 CSS 伪类时会发生什么?

如果浏览器不支持 CSS 伪类(例如 ),会发生什么情况:dir

例如:

html:dir(rtl) {
    color: red;
}
Run Code Online (Sandbox Code Playgroud)

如果浏览器不理解:dir伪类,他们会忽略这条规则吗?我对一般情况比对这个特定的伪类更感兴趣。我的直觉告诉我是的,但我还没有找到证实我直觉的文档。


这个问题与这个问题不同:无效的 CSS 选择器导致规则被删除:原理是什么?。它的范围更窄,我问的是浏览器在看到它无法识别的伪类时会做什么,而不是一般情况下它对无效的 CSS 选择器会做什么。据我所知,例如,无法识别的伪类仍可能被视为有效的选择器。

css cross-browser css-selectors pseudo-class

4
推荐指数
1
解决办法
2114
查看次数