2012-11-01 16 views
48

Come modificare il colore del segnaposto quando si concentra il campo di immissione? Io uso questo css per impostare il colore predefinito, ma come modificarlo sulla messa a fuoco?Come modificare il colore del segnaposto sullo stato attivo?

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

risposta

88

Prova questa, questo dovrebbe funzionare:

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

Ecco un esempio: http://jsfiddle.net/XDutj/27/

+0

perché non c'è: -ms-input-placeholder? –

+1

Non ho IE per testare quanto sopra, sarebbe bello se qualcuno potesse testarlo. AFAIK, IE9 manca del supporto segnaposto: http://caniuse.com/#search=placeholder –

+0

funziona come un incantesimo per me. Non ho provato in IE però, ovviamente. – Sethen

1

Prova questo:

HTML

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

CSS

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

attivo non è a fuoco. – BoltClock

+0

Sì, grazie. –

+2

Non era necessario, ma ho il sospetto che sia perché, a un'ulteriore ispezione, il tuo codice colorerebbe il valore reale dell'input su focus, anziché solo il suo testo segnaposto. – BoltClock

1

ho trovato questa soluzione con JQuery:

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

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

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

    }); 

con questo css:

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

Non hai bisogno di jQuery per questo ... – BoltClock

+0

JQuery è bello, ma deve morire. Tutto ciò che ha un inizio ha una fine, @DavidePalmieri – Edakos

+0

WTH sei su @BoltClock. Certo che ha bisogno di jQuery ... Se ha bisogno di qualcosa, jQuery! – PeeHaa

3

Oltre a Pranav risposta che ho affinato il codice con compatibilità textarea :

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

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

Cercato ovunque per questo. Funziona. Grazie! – Luke

0

Da Firefox 19: La pseudo-classe: -moz-placeholder che corrisponde agli elementi del modulo con l'attributo placeholder è stata rimossa e lo pseudoelemento :: - moz-placeholder è stato invece aggiunto.

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

Usa stella * per selezionare tutto

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


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


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


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

È possibile creare un disegno animato segnaposto materiale che si restringe in alto quando il campo di ingresso è a fuoco.

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

Fondamentalmente il campo etichetta si comporta come un segnaposto. Possiamo farlo solo usando css. spiegato qui http://www.voidtricks.com/create-material-design-animated-placeholder/

1

Di seguito ha lavorato per me:

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