2012-11-01 13 views
48

Jak zmienić kolor symbolu zastępczego podczas ustawiania ostrości w polu wprowadzania? Używam tego css do ustawienia domyślnego koloru, ale jak zmienić to na fokusie?Jak zmienić kolor zastępczy na fokusie?

::-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; } 

Odpowiedz

88

Spróbuj tego, to powinno działać:

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; 
} 

Oto przykład: http://jsfiddle.net/XDutj/27/

+0

dlaczego nie ma: -ms-input-placeholder? –

+1

Nie mam IE, aby przetestować powyższe, byłoby świetnie, gdyby ktoś mógł przetestować to. AFAIK, IE9 nie ma obsługi zastępczej: http://caniuse.com/#search=placeholder –

+0

Działa jak urok dla mnie. Oczywiście nie testowałem w IE. – Sethen

1

Spróbuj tego:

HTML

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

CSS

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

aktywny nie jest aktywny. – BoltClock

+0

Tak, dziękuję. –

+2

To nie było konieczne, ale podejrzewam, że tak jest, ponieważ po dokładniejszym sprawdzeniu twój kod zmieściłby rzeczywistą wartość danych wejściowych na fokusie, a nie tylko tekst zastępczy. – BoltClock

1

Znalazłem ten roztwór z jQuery:

$('input[type="text"]').each(function(){ 

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

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

    }); 

z tym CSS:

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

Nie potrzebujesz jQuery do tego ... – BoltClock

+0

JQuery jest piękna, ale musi umrzeć. Wszystko, co ma początek, ma koniec, @DavidePalmieri – Edakos

+0

WTH jesteś na @BoltClock. Oczywiście potrzebuje jQuery ... Jeśli cokolwiek potrzebuje moar jQuery! – PeeHaa

3

Oprócz Pranav odpowiedzi I udoskonalił kod z kompatybilności textarea :

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

:focus::-webkit-input-placeholder { color: #ccc; } 
:focus:-moz-placeholder { color: #ccc; }​ 
+0

Szukałem tego wszędzie. To działa. Dzięki! – Luke

0

Z przeglądarki Firefox 19: Pseudoklasa: -moz-placeholder, która dopasowuje elementy formularza z atrybutem placeholder, została usunięta, a zamiast niego dodano pseudoelement :: - moz-placeholder.

input:focus::-moz-placeholder { color: transparent; } 
1

Zastosowanie gwiazda * aby zaznaczyć wszystko

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


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


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


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

Można utworzyć materiał projektowy animowane zastępczy, który kurczy się na szczycie, gdy pole tekstowe jest skoncentrowany.

<div class="field"> 
<input type="text" name="user" required><br> 
<label>Enter Username</label> 
</div> 

Zasadniczo pole etykiety będzie działało jak symbol zastępczy. Możemy to zrobić tylko za pomocą css. Wyjaśnione tutaj http://www.voidtricks.com/create-material-design-animated-placeholder/

1

Następujące pracował dla mnie:

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