如何仅将伪元素样式应用于特定 class?

How to apply pseudo-element styling to specific class only?

我在 html 中有这样的输入元素:

<input type="text" placeholder="any TEXT" />

并在 CSS 中为占位符设置样式:

::-webkit-input-placeholder { color: red; text-transform: uppercase;}
input::-moz-placeholder {color: red; text-transform: uppercase;}
input:-moz-placeholder {   /* Older versions of Firefox */  color: red; text-transform: uppercase;}
input:-ms-input-placeholder { color: red;   text-transform: uppercase;}

它工作正常但是, 问题是它将此样式应用于页面上的所有输入元素,但它们假设具有不同的占位符样式。我如何将 CSS 中的占位符样式限制为特定的 class - 假设“.placeholder-red” 所以在 HTML 中我可以使用它像常规 class:

<input type="text" class="placeholder-red"any TEXT" />

???

???

我试过这样的事情:

.placeholder-red::-webkit-input-placeholder { color: red; text-transform: uppercase;}

并且有效,但仅适用于 ::-webkit-input-placeholder{...}(这意味着此样式可能不适用于其他浏览器),但是我如何将它应用到 input::-moz-placeholder{...}?我尝试过这样的事情 - 不起作用:

.placeholder-red input::-moz-placeholder {color: red; text-transform: uppercase;}

正如您所说 .placeholder-red::-webkit-input-placeholder{...} 您走在正确的道路上,效果很好。

要申请其他 CSS 支持,只需执行以下操作:

input.placeholder-red::-moz-placeholder {
    color: red; text-transform: uppercase;
}
input.placeholder-red:-moz-placeholder {   
    /* Older versions of Firefox */  
    color: red; text-transform: uppercase;
}
input.placeholder-red:-ms-input-placeholder { 
    color: rgba(0,5,143,.5);  text-transform: uppercase;
}

请注意,我使用的是一个简单的 CSS 选择器:input.placeholder-red 然后将伪 class 应用到该选择器上。

让我知道 this jsFiddle 是否适合您。