2012-02-26 9 views
29

Próbowałem wykonać poniższy temat, ale bezskutecznie. Change an HTML5 input's placeholder color with CSSZmiana koloru znaku zastępczego HTML5 dla danych wejściowych za pomocą CSS nie działa w przeglądarce Chrome

Próbowałem pokolorować mój symbol zastępczy, ale nadal pozostaje szary na Chrome 17.0.963.56 m.

HTML

<input type='text' name='test' placeholder='colorize placeholder' value='' /> 

CSS

INPUT::-webkit-input-placeholder, 
INPUT:-moz-placeholder { 
    color:red; 
} 
input[placeholder], [placeholder], *[placeholder] 
{ 
    color:green !important; 
} 

JSfiddle

W przeglądarce Firefox 10.0.2 działa poprawnie.

+1

Jeśli używasz ramy CSS jak Bootstrap , mogą już mieć zdefiniowane te style, więc musisz dodać '! important' lub upewnić się, że wszystko koliduje zgodnie z przeznaczeniem. –

+0

'! Important' zrobiło to dla mnie. Bez tego kolor tekstu zastępczego pozostałby niezmiennie frustrujący, nawet jeśli inne atrybuty czcionki mogłyby zostać zmienione. – Velojet

+0

Możliwy duplikat [Zmień kolor HTML5 elementu wejściowego wejścia za pomocą CSS] (http://stackoverflow.com/questions/2610497/change-an-inputs-html5-placeholder-color-with-css) – fuxia

Odpowiedz

56

Zapominasz o :. Z tego powodu cały selektor został uszkodzony i nie działał. http://jsfiddle.net/a96f6/87/

Edit: Wydaje się (? Po aktualizacji) to już nie działa, spróbuj tego:

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

Uwaga: nie mieszać sprzedawca selektorów prefiksu (-moz, -webkit , -ms, ...). Chrome na przykład nie zrozumie "-moz-", a następnie zignoruje cały selektor.

Edycja dla wyjaśnienia: Aby to działa we wszystkich przeglądarkach, użyj tego kodu:

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

::-moz-placeholder { 
    color:red; 
} 

::-ms-placeholder { 
    color:red; 
} 

::placeholder { 
    color:red; 
} 

+0

Ładnie wykonane. +1. –

+1

Dzięki! twoje miały rację. Nowe zasady to: 'input :: - webkit-input-placeholder, dane wejściowe :: - moz-placeholder { kolor: czerwony; } ' –

+3

Czy to nie' input: -moz-placeholder {color: red; } 'zamiast? Tak jest w drugim wątku. Nie należy również umieszczać obu selektorów w jednej regule. –

0
::-webkit-input-placeholder { 
    color: #008000; 
} 
12

Jak powiedział @Alex, z jakiegoś powodu nie możesz połączyć selektorów dla wielu przeglądarek.

Ten zadziała

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

::-moz-placeholder { 
    color:red; 
} 

::-ms-placeholder { 
    color:red; 
} 

::placeholder { 
    color:red; 
} 

Ale to nie zadziała (w Chrome przynajmniej):

::-webkit-input-placeholder, 
::-moz-placeholder, 
::-ms-placeholder, 
::placeholder { 
    color:red; 
} 

Wygląda jak dziwactwo realizacji przeglądarka do mnie.

Należy również pamiętać, że nie trzeba definiować stylów zastępczych na całym świecie, nadal można zmieniać zakres wyboru ::placeholder tak, jak zwykle. Działa to:

.my-form .input-text::-webkit-input-placeholder { 
    color:red; 
} 

.my-form .input-text::-moz-placeholder { 
    color:red; 
} 
+5

dziękuję za wzmiankę o tym, co ** nie będzie ** działało, to gdzie się zepsułem – lfender6445

3

Po prostu doświadczyłem tego samego problemu i pomyślałem, że warto się nim dzielić. Z jakiegoś powodu, kolor nie zmieniał na firefox i zauważyłem, że jej tylko wtedy, gdy używam wartości szesnastkowe więc zrobiłem to w ten sposób dla danej stronie internetowej:

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

::-moz-placeholder { 
    color: black; 
} 

::-ms-placeholder { 
    color: #666666; 
} 

::placeholder { 
    color: #666666; 
} 
+0

Żadna inna odpowiedź nie zadziałała! Ta cecha zastępcza jest dziwna ... nie można łączyć selektorów z prefiksem producenta, nie można używać nazwanych kolorów ... – papiro

Powiązane problemy