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

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

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

作为示例,我倾向于使用以下四个 Select 器设置占位符样式:

  • input:-moz-placeholder
  • input::-moz-placeholder
  • input:-ms-input-placeholder
  • input::-webkit-input-placeholder

(虽然:-moz-placeholder is being deprecated支持::-moz-placeholder,但这只在Firefox19发布时发生,所以目前两者都需要才能更好地支持浏览器).

令人沮丧的是,声明和给出每个(相同)样式会导致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;
}

我真正想做的是将它们组合成一个逗号分隔的规则集,如下所示:

input:-moz-placeholder,
input::-moz-placeholder,
input:-ms-input-placeholder,
input::-webkit-input-placeholder{
    font-style: italic;
    text-align: right;
}

然而,尽管在相当多的场合try 了这一方法,但似乎从未奏效.这让我担心CSS的一些基本部分是我不理解的.

有人能解释为什么会发生这种情况吗?

推荐答案

CSS2.1 states:

Select 符(另请参见关于selectors的部分)由直到(但不包括)第一个左花括号({)为止的所有内容组成. Select 器总是与挡路声明搭配使用.当用户代理无法解析 Select 符时(即,它不是有效的CSS2.1),它必须同时解析 Select 符和下面的挡路声明(如果有).

请注意,由于CSS2.1早于CSS3,因此"它不是有效的CSS 2.1"是在假设用户代理完全符合CSS2.1并且理论上不存在CSS3的假设下编写的.在实践中,只要规范说"它不是有效的CSS"或类似的东西,就应该理解为"用户代理不理解它".有关更深入的解释,请参阅我对this related question的回答.

也就是说,由于一个供应商的浏览器不理解其他供应商的前缀,它必须删除伪类和伪元素 Select 器中包含这些无法识别的前缀的任何规则1

有关why条这样的规则是否已经实施的一些见解,请参见this answer.


1 Note that WebKit is notorious for partially flouting this rule: it has no trouble parsing rules whose selectors have unrecognized prefixed pseudo-elements (which in this case is ::-moz-placeholder). That said, the :-moz-placeholder pseudo-class in your combined rule will cause it to break anyway.

Css相关问答推荐

此css Select 器的总体特性是什么?按钮:不是(#mainBtn,.cta)

如何在Ionic上更改输入的浮点数名称 colored颜色 ?

如何在CSS中实现边框的局部透明?

Astro网站在使用Astro Build构建后无法正常工作

使用框架时样式冲突导致的 CSS 网格布局问题

应用边框半径的 iframe 在 4 个角上有细曲线

如何更改导航栏标题中链接的文本 colored颜色 和导航丸中的链接(在shiny 的应用程序中)?

使元素在顶部和中心都有粘性

我怎样才能将我的按钮向上移动,因为文本是

在活动状态下更改按钮的外观

有没有办法让它比它更敏感?

CSS如何防止键盘向上移动内容?

我怎样才能在某些区域制作一个单独的文本行,而在其他区域制作一个实心填充?

您如何设置 Google Places Autocomplete API 的下拉菜单样式?

如何使表格中一行的最后一个单元格占据所有剩余宽度

如何在 CSS 中覆盖图像?

跨域 iframe 调整大小

在 CSS 中使用多个 @font-face 规则

你如何在 SASS 中定义属性 Select 器?

html元素(div)的全高,包括边框,填充和边距?