如何在焦点状态下更改占位符的颜色?

74

如何在输入框获得焦点时更改占位符的颜色? 我使用以下CSS代码设置默认颜色,但如何在获得焦点时更改它?

::placeholder { color: blue; }
11个回答

134

试试这个,应该可以运行:

input::-webkit-input-placeholder {
    color: #999;
}
input:focus::-webkit-input-placeholder {
    color: red;
}

/* Firefox < 19 */
input:-moz-placeholder {
    color: #999;
}
input:focus:-moz-placeholder {
    color: red;
}

/* Firefox > 19 */
input::-moz-placeholder {
    color: #999;
}
input:focus::-moz-placeholder {
    color: red;
}

/* Internet Explorer 10 */
input:-ms-input-placeholder {
    color: #999;
}
input:focus:-ms-input-placeholder {
    color: red;
}

这里有一个例子:http://jsfiddle.net/XDutj/27/


为什么没有 :-ms-input-placeholder? - Davide
1
我没有IE来测试上述内容,如果有人能测试一下就太好了。据我所知,IE9不支持占位符:http://caniuse.com/#search=placeholder - Pranav 웃
对我来说运行得很好。不过,显然没有在IE中进行测试。 - Sethen
1
很遗憾,它在IE 10中不起作用,因为IE使用伪类:-ms-input-placeholder而不是伪元素::-ms-placeholder。无法测试焦点行为,因为IE默认在焦点上隐藏占位符(不幸的是我没有找到避免这种情况的方法)。请参见此更新的Fiddle - Linus Caldwell

15
这对我有效:
input:focus::placeholder {
  color: blue;
}

2
这应该被更改为标记的答案。 - mikael1000

5
除了Pranav的回答,我还对代码进行了改进,以兼容

2

完整且更新的(2021年)示例:

input::placeholder {
  color: blue;
}

input:focus::placeholder {
  color: green;
}
<label for="city">City:</label><br>
<input type="text" id="city" name="city" placeholder="your favorite city">


2
以下方法对我有用:

input:focus::-webkit-input-placeholder
{
    color: red;
}

1
尝试这个:
HTML
<input type='text' placeholder='Enter text' />

CSS

input[placeholder]:focus { color: red; }

2
那并不是必要的,但我猜测这是因为在进一步检查后,你的代码会在焦点处着色实际输入值,而不仅仅是占位符文本。 - BoltClock

1
我已经用 JQuery 找到了这个解决方案:
 $('input[type="text"]').each(function(){

    $(this).focus(function(){
      $(this).addClass('input-focus');
    });

    $(this).blur(function(){
      $(this).removeClass('input-focus');
    });

  });

使用这个 CSS:

.input-focus::-webkit-input-placeholder { color: #f00; }    
.input-focus:-moz-placeholder { color: #f00; }
.input-focus:-ms-input-placeholder { color: #f00; }

JQuery很美,但必须消亡。每一件有开端的事物,都有结束的时候。@DavidePalmieri - evalarezo
你在说什么啊,@BoltClock。当然需要jQuery啦...如果可以的话,还需要更多的jQuery! - PeeHaa

1
使用星号*来选择所有内容
*::-webkit-input-placeholder { color: #999; }


*:-moz-placeholder { color: #999; }


*::-moz-placeholder { color: #999; }


*:-ms-input-placeholder { color: #999; }

1
注意:由于某些原因,您不能使用逗号来应用多个规则。这些规则必须像所示的那样分别声明。(尽管现在您可能只需要使用ms-input和::placeholder) - Vael Victus

0
从 Firefox 19 开始: 匹配带有占位符属性的表单元素的 :-moz-placeholder 伪类已被移除,取而代之的是新增的 ::-moz-placeholder 伪元素。
input:focus::-moz-placeholder { color: transparent; }

-1
您可以创建一个材料设计的动画占位符,当输入字段聚焦时,它会在顶部收缩。
<div class="field">
 <input type="text" name="user" required><br>
 <label>Enter Username</label>
 </div>

基本上,标签字段将充当占位符。我们只能使用CSS来实现这一点。 在此处解释http://www.voidtricks.com/create-material-design-animated-placeholder/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接