Как изменить цвет заполнителя в фокусе?

Как изменить цвет заполнителя при фокусировке поля ввода? Я использую этот CSS для установки цвета по умолчанию, но как изменить его в фокусе?

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

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

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

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

person Davide    schedule 01.11.2012    source источник


Ответы (9)


Попробуйте это, это должно сработать:

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/

person Pranav 웃    schedule 01.11.2012
comment
почему нет: -ms-input-placeholder? - person Davide; 01.11.2012
comment
У меня нет IE, чтобы проверить это, было бы здорово, если бы кто-нибудь мог это проверить. AFAIK, в IE9 отсутствует поддержка заполнителей: caniuse.com/#search=placeholder - person Pranav 웃; 01.11.2012
comment
Для меня работает как оберег. Однако, очевидно, не тестировал в IE. - person Sethen; 05.05.2013
comment
Нет, к сожалению, это не работает в IE 10, потому что IE использует псевдокласс :-ms-input-placeholder вместо псевдоэлемента ::-ms-placeholder. Невозможно проверить поведение фокуса, потому что IE по умолчанию скрывает заполнитель в фокусе (и, к сожалению, я не нашел способа избежать этого). Просмотрите это обновление для своей скрипки. - person Linus Caldwell; 10.05.2013

В дополнение к ответу Pranav я улучшил код с совместимостью с текстовым полем:

::-webkit-input-placeholder { color: #999; }
:-moz-placeholder { color: #999; }

:focus::-webkit-input-placeholder { color: #ccc; }
:focus:-moz-placeholder { color: #ccc; }​
person Davide    schedule 01.11.2012

Это работает для меня:

input:focus::placeholder {
  color: blue;
}
person David Villegas    schedule 18.09.2020
comment
БЛАГОДАРЮ ВАС! Это сработало. - person Stephanieraymos; 25.02.2021

Для меня сработало следующее:

input:focus::-webkit-input-placeholder
{
    color: red;
}
person Bel    schedule 02.01.2018

Попробуй это:

HTML

<input type='text' placeholder='Enter text' />

CSS

input[placeholder]:focus { color: red; }
person Kevin Boucher    schedule 01.11.2012
comment
В этом не было необходимости, но я подозреваю, что это потому, что при дальнейшей проверке ваш код будет окрашивать фактическое значение ввода в фокусе, а не только его текст-заполнитель. - person BoltClock; 01.11.2012

Я нашел это решение с помощью 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; }
person Davide    schedule 01.11.2012
comment
JQuery прекрасен, но должен умереть. Все, что имеет начало, имеет конец, @DavidePalmieri - person evalarezo; 12.05.2015
comment
ЧТО ты на @BoltClock. Конечно, ему нужен jQuery ... Во всяком случае, ему нужен jQuery! - person PeeHaa; 23.08.2016

Используйте звездочку *, чтобы выбрать все

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


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


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


*:-ms-input-placeholder { color: #999; }
person Ari    schedule 02.10.2014
comment
Примечание: по какой-то причине нельзя использовать запятые для применения нескольких правил. Они должны быть заявлены отдельно, как показано. (хотя сейчас вам, вероятно, нужны только ms-input и :: placeholder) - person Vael Victus; 24.07.2018

Из Firefox 19: псевдокласс: -moz-placeholder, который сопоставляет элементы формы с атрибутом placeholder, был удален, и вместо него был добавлен псевдоэлемент :: - moz-placeholder.

input:focus::-moz-placeholder { color: transparent; }
person Leszek Pietrzak    schedule 23.02.2013

Вы можете создать анимированный заполнитель материального дизайна, который сжимается сверху, когда поле ввода находится в фокусе.

<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/

person Anand Roshan    schedule 26.10.2015