moz-placeholder 在 Firefox 中不起作用

Posted

技术标签:

【中文标题】moz-placeholder 在 Firefox 中不起作用【英文标题】:moz-placeholder does not work in Firefox 【发布时间】:2012-12-10 11:04:46 【问题描述】:

请查看下面的代码,占位符的 CSS 在 Firefox(最新版本)中不起作用,但在 Chrome 中可以正常工作。如何为 Firefox 修复它?

字段有多种输入颜色,但占位符我只有一种颜色,所以我不想在 moz-placeholder 属性中指定任何类名,以便它适用于所有输入字段。

HTML:

<div class="row">
    <input type="text" placeholder="some text asdf" value="" />
</div>

CSS:

::-webkit-input-placeholder  color:red; 
::-moz-placeholder  color:red; 
input:-moz-placeholder  color:red; 

.row input[type="text"]
     color: blue;     

演示: http://jsfiddle.net/C6fjh/

【问题讨论】:

【参考方案1】:

在某些情况下,与 Chrome 或 IE 相比,Mozilla 中的红色会显示得更浅。在这种情况下,您也需要添加 opacity:1 。

例如

:-moz-placeholder color: red; opacity:1; ::-moz-placeholder color: red; opacity:1;

【讨论】:

opacity:1; 是我所缺少的。谢谢【参考方案2】:

我没用,只是最后一条规则被 Firefox 认为更具体。试试这个:

::-webkit-input-placeholder  color:red; 
.row input[type="text"]::-moz-placeholder  color:red; 
.row input[type="text"]:-moz-placeholder  color:red; 

.row input[type="text"] 
     color: blue;     

请参阅this fiddle 以获得工作演示。

我不确定浏览器的差异来自哪里,或者哪个是“正确的”。带有 a 标记和 :hover 伪类的 similar experiment 在 FF 和 Chrome 中显示相同的行为:如果元素的选择器更具体(并且如果您按照我的建议进行相同的更改,则两者都将忽略伪类颜色上面你在 Chrome 和 FF 中得到相同的(expected?) behavior)。

【讨论】:

选择器:-moz-placeholder 是一个伪类,所以组合选择器将input 元素匹配为真实元素(处于占位符显示状态),但在原始CSS 代码中,该元素具有它的颜色由具有更具体选择器的规则设置。相反,::-webkit-input-placeholder 是一个伪元素,仅对应于占位符文本。 Firefox 即将移动以使用伪元素作为占位符,请参阅developer.mozilla.org/en-US/docs/CSS/:-moz-placeholder 另一个提示,如果您需要正确显示颜色,请添加:'opacity: 1;'我使用的是 FF 20.0.1,它会将占位符调暗到低于 100% 的不透明度。尝试将背景颜色设置为“黑色”并查看它是否显示为灰色。不透明度:1,是真正的黑色。 谢谢你,尼尔,这让我发疯了。我从没想过要应用不透明度:1. @NeilMonroe,我知道这是一个古老的主题,但你的答案是正确的。也许您应该将其解释为答案而不是评论。似乎即使是新版本的 Firefox 也降低了占位符的不透明度,所以颜色的差异是由于它。顺便说一句:opacity: 1 进入 ::moz-placeholder 选择器非常适合我。 @NeilMonroe 如果您愿意,请随时建议将其作为我的答案的编辑。

以上是关于moz-placeholder 在 Firefox 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

html placeholder怎么设置居右

placeholder样式

IE 和 Firefox 中不显示文本输入占位符

为啥 Firefox 会改变我的输入/占位符颜色?

input 修改placeholder颜色

修改 input中的placeholder的字体样式和颜色