Zmień kolor zastępczy wejścia HTML5 za pomocą CSS

3974

Chrome obsługuje atrybut zastępczy dla input[type=text]elementów (inni prawdopodobnie też tak robią).

Ale poniższe wartości CSSnie mają wpływu na wartość obiektu zastępczego:

input[placeholder], [placeholder], *[placeholder] {
    color: red !important;
}
<input type="text" placeholder="Value">

Valuenadal pozostanie greyzamiast red.

Czy istnieje sposób na zmianę koloru tekstu zastępczego?

David Murdoch
źródło
375
Szybki heads-up (nie rozwiązanie, tylko FYI): jeśli dobrze pamiętam, input [symbol zastępczy] po prostu pasuje do tagów <input>, które mają atrybut zastępczy, nie pasuje do samego atrybutu zastępczego.
pinkgothic
12
Tak, przyszła mi do głowy myśl, że może to być próba stylizacji atrybutu „tytułu” elementu. Więc +1 za podobne myślenie!
David Murdoch
5
@MathiasBynens Pseudoklasa : symbol zastępczy jest zgodny z elementem wejściowym, który wyświetla taki tekst zastępczy. Więc pasuje do <input>tagu, takiego jak inputselektor, ale pokazuje teraz tekst zastępczy. Nie pasuje również do samego atrybutu zastępczego.
HEX
3
@ HEX To nie jest inputselektor, ponieważ wybiera wszystkie inputelementy. :placeholder-shownwybiera tylko inputelementy, które obecnie pokazują symbol zastępczy, pozwalając stylizować tylko te elementy i skutecznie stylizować tekst zastępczy. Co próbujesz powiedzieć?
Mathias Bynens,
1
@HEX (Oczywiście wybrał również textareaelementy, które wyświetlają tekst zastępczy.)
Mathias Bynens,

Odpowiedzi:

4808

Realizacja

Istnieją trzy różne implementacje: pseudoelementy, pseudoklasy i nic.

  • WebKit, Blink (Safari, Google Chrome, Opera 15+) i Microsoft Edge używasz pseudo-elementu: ::-webkit-input-placeholder. [ Ref ]
  • Mozilla Firefox od 4 do 18 używa pseudoklasy: :-moz-placeholder( jeden dwukropek). [ Ref ]
  • Mozilla Firefox 19+ używa pseudoelementu: ::-moz-placeholderale stary selektor jeszcze przez jakiś czas będzie działał. [ Ref ]
  • Internet Explorer 10 i 11 są za pomocą pseudo-klasy: :-ms-input-placeholder. [ Ref ]
  • Kwiecień 2017: Większość nowoczesnych przeglądarek obsługuje prosty pseudoelement ::placeholder [ Ref ]

Internet Explorer 9 i nowsze wersje w ogóle nie obsługują tego placeholderatrybutu, podczas gdy Opera 12 i nowsze wersje nie obsługują selektora CSS dla symboli zastępczych.

Trwa dyskusja na temat najlepszego wdrożenia. Zauważ, że pseudoelementy działają jak prawdziwe elementy w DOM DOMU . A paddingna inputnie otrzyma tego samego koloru tła co pseudoelement.

Selektory CSS

Aplikacje klienckie są zobowiązane do zignorowania reguły przy użyciu nieznanego selektora. Zobacz Selektory Poziom 3 :

grupa selektorów zawierającą nieprawidłowe selektor jest nieprawidłowy.

Potrzebujemy więc osobnych reguł dla każdej przeglądarki. W przeciwnym razie cała grupa byłaby ignorowana przez wszystkie przeglądarki.

::-webkit-input-placeholder { /* WebKit, Blink, Edge */
    color:    #909;
}
:-moz-placeholder { /* Mozilla Firefox 4 to 18 */
   color:    #909;
   opacity:  1;
}
::-moz-placeholder { /* Mozilla Firefox 19+ */
   color:    #909;
   opacity:  1;
}
:-ms-input-placeholder { /* Internet Explorer 10-11 */
   color:    #909;
}
::-ms-input-placeholder { /* Microsoft Edge */
   color:    #909;
}

::placeholder { /* Most modern browsers support this now. */
   color:    #909;
}
<input placeholder="Stack Snippets are awesome!">

Uwagi dotyczące użytkowania

  • Uważaj, aby uniknąć złych kontrastów. Wygląda na to, że Firefox zastępuje domyślnie z mniejszym kryciem, więc należy go użyć opacity: 1tutaj.
  • Zauważ, że tekst zastępczy jest po prostu odcinany, jeśli nie pasuje - zmień rozmiar elementów wejściowych emi przetestuj je przy użyciu dużych ustawień minimalnego rozmiaru czcionki. Nie zapomnij o tłumaczeniach: niektóre języki potrzebują więcej miejsca na to samo słowo.
  • placeholderNależy również przetestować przeglądarki z obsługą HTML, ale bez obsługi CSS (np. Opera).
  • Niektóre przeglądarki używają dodatkowego domyślnego CSS dla niektórych inputtypów ( email, search). Mogą one wpływać na renderowanie w nieoczekiwany sposób. Użyj właściwości -webkit-appearance i, -moz-appearanceaby to zmienić. Przykład:
    [type="search"] {
        -moz-appearance:    textfield;
        -webkit-appearance: textfield;
        appearance: textfield;
    }
fuxia
źródło
27
Zauważ też, że chociaż Webkit uważa, że ​​ma to dość silną specyfikę, Mozilla nie. Prawdopodobnie będziesz musiał wpakować kilku importerów!
dmnc
18
@toscho: dzięki za świetną odpowiedź. Potrzebowałem tylko krótkiej demonstracji „na żywo”, więc twój przykład można również znaleźć tutaj: jsfiddle.net/Sk8erPeter/KyVXK . Dzięki jeszcze raz.
Sk8erPeter
90
Wygląda na to, że Firefox zastępuje domyślnie z mniejszym kryciem. Dla każdego, kto jest odświeżający i zastanawia się, dlaczego do cholery to nie działa („dlaczego mój biały tekst jest nadal szary ..”), użyj nieprzezroczystości: 1
jwinn
8
W IE10 *:-ms-input-placeholderi :-ms-input-placeholdersama nie działa, ale INPUT:-ms-input-placeholderdziała. Dziwny.
Jared
37
Uwaga dla Bootstrap 3: klasa „form-control” zastępuje kolor ze względu na specyfikę CSS (tj. „Form-control :: - webkit-input-placeholder”), więc musisz być co najmniej tak konkretny lub użyć „! Ważne” w twoim CSS. (debiut był piekłem, ponieważ ani Firebug, ani Devtools nie wydają się pokazywać tej pseudoklasy)
Costa
724

/* do not group these rules */
*::-webkit-input-placeholder {
    color: red;
}
*:-moz-placeholder {
    /* FF 4-18 */
    color: red;
    opacity: 1;
}
*::-moz-placeholder {
    /* FF 19+ */
    color: red;
    opacity: 1;
}
*:-ms-input-placeholder {
    /* IE 10+ */
    color: red;
}
*::-ms-input-placeholder {
    /* Microsoft Edge */
    color: red;
}
*::placeholder {
    /* modern browser */
    color: red;
}
<input placeholder="hello"/> <br />
<textarea placeholder="hello"></textarea>

Spowoduje to styl wszystkich inputi textareasymboli zastępczych.

Ważna uwaga: nie grupuj tych reguł. Zamiast tego utwórz osobną regułę dla każdego selektora (jeden nieprawidłowy selektor w grupie powoduje, że cała grupa jest nieważna).

brillout
źródło
2
Dokument MSDN, z którym się łączysz, stwierdza, że ​​jest obsługiwany tylko w Internet Explorerze 10. To wciąż dobre znalezisko, ale niezbyt przydatne, dopóki baza użytkowników IE10 nie stanie się znacząca (możemy na to spojrzeć w perspektywie lat).
danishgoel
1
Realistycznie chcesz stylizować symbole zastępcze w całej witrynie, a nie stylizować poszczególne dane wejściowe według identyfikatora.
BadHorsie,
10
Po FF19 musisz użyć :: - moz-placeholder
viplezer
1
Musisz umieścić ten CSS na dole arkusza stylów, jeśli zastosujesz także klasę do danych wejściowych, aby działał na IE (11). Zobacz ten widelec na JSFiddle jsfiddle.net/9kkef . Otwórz stronę zarówno w IE, jak i innej przeglądarce, w IE zobaczysz, że tekst zastępczy będzie w kolorze zastosowanej klasy.
Timo002,
Czasami, jeśli nie działa, dodaj <! Ważne> do właściwości koloru.
Ahmed Na.
277

Możesz także stylizować obszary tekstowe:

input::-webkit-input-placeholder, textarea::-webkit-input-placeholder {
  color: #636363;
}
input:-moz-placeholder, textarea:-moz-placeholder {
  color: #636363;
}
Matt
źródło
2
na drukowanie w chrome nie działa ... jakakolwiek pomoc @media print {input [type = text] .form-control :: - webkit-input-placeholder, input [type = textarea] .form-control :: - webkit -input-placeholder {color: #FFFFFF; }}
Mahdi Alkhatib,
107

Dla użytkowników Bootstrap i Less istnieje mixin .placeholder:

// Placeholder text
// -------------------------
.placeholder(@color: @placeholderText) {
  &:-moz-placeholder {
    color: @color;
  }
  &:-ms-input-placeholder {
    color: @color;
  }
  &::-webkit-input-placeholder {
    color: @color;
  }
}
EIIPII
źródło
16
Lub nawet prościej, edytuj zmienną @input-color-placeholder- zwykle znajdującą się w zmiennych.
William
@William nie byłoby łatwiej zdefiniować sam selektor i użyć miksu, aby uniknąć konieczności cofania się i zmiany w przypadku, gdybyś chciał zmienić symbol zastępczy innego wejścia na inny kolor?
Brandito
@Brandito - to brzmi jak skrzynka krawędzi - generalnie kolor zastępczy jest taki sam dla wszystkich elementów formularza w projekcie.
William
@William Przepraszam, jestem okropny w formułowaniu tego rodzaju rzeczy, pomyślałem, że lepiej byłoby użyć mixin z argumentem żądanego koloru wejściowego, chociaż całkiem szczerze, prawdopodobnie myślę o przypadkach na krawędziach, m zwykłem (stylizować symbol zastępczy wprowadzania danych na kolorowym tle: P) przepraszam, ale masz rację, przepraszam.
Brandito,
99

Oprócz odpowiedzi toscho zauważyłem pewne niespójności w pakiecie internetowym między Chrome 9-10 a Safari 5 z wartymi odnotowania właściwościami CSS.

Konkretnie Chrome 9 i 10 nie obsługują background-color, border, text-decorationa text-transformkiedy stylizacji zastępczy.

Pełne porównanie różnych przeglądarek jest tutaj .

ajcw
źródło
76

Dla użytkowników Sass :

// Create placeholder mixin
@mixin placeholder($color, $size:"") {
  &::-webkit-input-placeholder {
    color: $color;
    @if $size != "" {
      font-size: $size;
    }
  }
  &:-moz-placeholder {
    color: $color;
    @if $size != "" {
      font-size: $size;
    }
  }
  &::-moz-placeholder {
    color: $color;
    @if $size != "" {
      font-size: $size;
    }
  }
  &:-ms-input-placeholder {
    color: $color;
    @if $size != "" {
      font-size: $size;
    }
  }
}

// Use placeholder mixin (the size parameter is optional)
[placeholder] {
  @include placeholder(red, 10px);
}
Konst_
źródło
Bardziej elastyczny sposób - w użyciu@content;
Milkovsky
60

To zadziała dobrze. DEMO TUTAJ:

input::-webkit-input-placeholder,
textarea::-webkit-input-placeholder {
  color: #666;
}
input:-moz-placeholder,
textarea:-moz-placeholder {
  color: #666;
}
input::-moz-placeholder,
textarea::-moz-placeholder {
  color: #666;
}
input:-ms-input-placeholder,
textarea:-ms-input-placeholder {
  color: #666;
}
<input type="text" placeholder="Value" />

Love Trivedi
źródło
1
Musiałem też dodać! Ważne także w przeglądarce Firefox v56
Savage
49

W przeglądarkach Firefox i Internet Explorer normalny kolor tekstu wejściowego przesłania właściwość koloru symboli zastępczych. Więc musimy

::-webkit-input-placeholder { 
    color: red; text-overflow: ellipsis; 
}
:-moz-placeholder { 
    color: #acacac !important; text-overflow: ellipsis; 
}
::-moz-placeholder { 
    color: #acacac !important; text-overflow: ellipsis; 
} /* For the future */
:-ms-input-placeholder { 
    color: #acacac !important; text-overflow: ellipsis; 
}
Dionysios Arvanitis
źródło
41

Rozwiązanie dla różnych przeglądarek:

/* all elements */
::-webkit-input-placeholder { color:#f00; }
::-moz-placeholder { color:#f00; } /* firefox 19+ */
:-ms-input-placeholder { color:#f00; } /* ie */
input:-moz-placeholder { color:#f00; }

/* individual elements: webkit */
#field2::-webkit-input-placeholder { color:#00f; }
#field3::-webkit-input-placeholder { color:#090; background:lightgreen; text-transform:uppercase; }
#field4::-webkit-input-placeholder { font-style:italic; text-decoration:overline; letter-spacing:3px; color:#999; }

/* individual elements: mozilla */
#field2::-moz-placeholder { color:#00f; }
#field3::-moz-placeholder { color:#090; background:lightgreen; text-transform:uppercase; }
#field4::-moz-placeholder { font-style:italic; text-decoration:overline; letter-spacing:3px; color:#999; }

Źródło: David Walsh

Kristian
źródło
41

Użyj nowego, ::placeholderjeśli używasz autoprefixera .

Zauważ, że mix .placeholder z Bootstrap jest przestarzały na korzyść tego.

Przykład:

input::placeholder { color: black; }

Podczas korzystania z autoprefixera powyższe zostaną przekonwertowane na poprawny kod dla wszystkich przeglądarek.

hitautodestruct
źródło
40

Teraz mamy standardowy sposób na zastosowanie CSS do symbolu zastępczego wejścia: ::placeholderpseudoelement z tego szkicu modułu 4 poziomu CSS.

3790069
źródło
Działa to w przeglądarce Firefox 51. Po prostu użyję tej metody; inne przeglądarki niedługo nadrobią zaległości (biorąc pod uwagę, że żadna funkcjonalność nie jest zepsuta, jeśli nie zostanie zastosowany standardowy styl).
Lonnie Best
36

Po prostu zdaję sobie sprawę z tego, że w przeglądarce Mozilla Firefox 19+ przeglądarka podaje wartość zastępczą dla symbolu zastępczego, więc kolor nie będzie taki, jak naprawdę chcesz.

input::-webkit-input-placeholder, textarea::-webkit-input-placeholder {
    color: #eee; opacity:1;
}
input:-moz-placeholder, textarea:-moz-placeholder {
    color: #eee; opacity:1;
}
input::-moz-placeholder, textarea::-moz-placeholder {
    color: #eee; opacity:1;
}
input:-ms-input-placeholder, textarea:-ms-input-placeholder {
    color: #eee; opacity:1;
}

Zastępuję znak „ opacity1”, więc dobrze będzie zacząć.

Burak Tokak
źródło
35

Nie pamiętam, gdzie znalazłem ten fragment kodu w Internecie (nie został napisany przeze mnie, nie pamiętam, gdzie go znalazłem, ani kto go napisał).

$('[placeholder]').focus(function() {
        var input = $(this);
        if (input.val() == input.attr('placeholder')) {
            input.val('');
            input.removeClass('placeholder');
        }
    }).blur(function() {
        var input = $(this);
        if (input.val() == '' || input.val() == input.attr('placeholder')) {
            input.addClass('placeholder');
            input.val(input.attr('placeholder'));
        }
    }).blur();
    $('[placeholder]').parents('form').submit(function() {
        $(this).find('[placeholder]').each(function() {
            var input = $(this);
            if (input.val() == input.attr('placeholder')) {
                input.val('');
            }
        })
    });

Wystarczy załadować ten kod JavaScript, a następnie edytować symbol zastępczy za pomocą CSS, wywołując tę ​​regułę:

form .placeholder {
   color: #222;
   font-size: 25px;
   /* etc. */
}
Dragos Rizescu
źródło
3
Jest to stary sposób na zrobienie tego, z którego dość często korzystałem. Wadą jest to, że tekst zastępczy znika po ustawieniu ostrości. Uważam, że jest to denerwujące, gdy interfejs użytkownika nie zawiera również etykiet obok danych wejściowych. W ciągu ostatnich kilku miesięcy zacząłem zastępować tę metodę za pomocą tekstu zastępczego, co moim zdaniem jest ulepszeniem UX.
Redtopia,
4
Innym problemem z kodem takim jak ten jest to, że kod na serwerze musi zajmować się tekstem zastępczym jako pustym wejściem, który ma problemy z przypadkowymi przypadkami, w których chcesz wejść do miasta o nazwie „Miasto”. Zamiast sprawdzać wartości względem tekstu zastępczego, powinieneś naprawdę użyć zmodyfikowanej danych flagi na wejściu, a następnie wyczyścić dane wejściowe w formularzu prześlij, jeśli flaga nie jest ustawiona. W przypadku interfejsów AJAX możesz nawet nie mieć formularza, więc powinieneś być w stanie powiązać dowolne zdarzenie przesyłania z danymi wejściowymi. To jedna z tych naprawdę prostych sytuacji, która nie jest.
Whelkaholism
34

Myślę, że ten kod będzie działał, ponieważ symbol zastępczy jest potrzebny tylko dla tekstu wejściowego. Więc ten jeden wiersz CSS będzie wystarczający dla twoich potrzeb:

input[type="text"]::-webkit-input-placeholder {
    color: red;
}
Alias ​​Varghese
źródło
Nie używaj już tego. Jest jeszcze kilka elementów z symbolem zastępczym i większą liczbą prefiksów. Zobacz powyższe rozwiązania lub użyj ::placeholderrazem z autoprefixerem.
RiZKiT,
33

W przypadku użytkowników Bootstrap , jeśli używasz class="form-control", może występować problem ze specyfiką CSS. Powinieneś otrzymać wyższy priorytet:

.form-control::-webkit-input-placeholder {
    color: red;
}
//.. and other browsers

Lub jeśli używasz Mniej :

.form-control{
    .placeholder(red);
}
twarzy
źródło
19

Jeśli używasz Bootstrap i nie możesz tego uruchomić, prawdopodobnie nie zauważyłeś, że sam Bootstrap dodaje te selektory. Mówimy o Bootstrap v3.3.

Jeśli próbujesz zmienić symbol zastępczy w klasie CSS .form-control , powinieneś zastąpić go w następujący sposób:

.form-control::-webkit-input-placeholder { /* WebKit, Blink, Edge */
    color:    #777;
}
.form-control:-moz-placeholder { /* Mozilla Firefox 4 to 18 */
    color:    #777;
    opacity:  1;
}
.form-control::-moz-placeholder { /* Mozilla Firefox 19+ */
    color:    #777;
    opacity:  1;
}
.form-control:-ms-input-placeholder { /* Internet Explorer 10-11 */
    color:    #777;
}
steady_daddy
źródło
17

Ten krótki i przejrzysty kod:

::-webkit-input-placeholder {color: red;}
:-moz-placeholder           {color: red; /* For Firefox 18- */}
::-moz-placeholder          {color: red; /* For Firefox 19+ */}
:-ms-input-placeholder      {color: red;}
BANTIMATHUR
źródło
17

Co powiesz na to

<input type="text" value="placeholder text" onfocus="this.style.color='#000'; 
    this.value='';" style="color: #f00;" />

Brak CSS lub symbolu zastępczego, ale masz tę samą funkcjonalność.

użytkownik1729061
źródło
15
co się stanie, jeśli ktoś kliknie ponownie po napisaniu czegoś… oryginalny tekst, który napisali, zniknie!
Lucky Soni
3
@LuckySoni możesz to zrobić, ale ja osobiście wolę ten pierwszy. <input type="text" value="placeholder text" onfocus="if(!this.haswriting){this.style.color='#000'; this.value='';}" onblur="if(!this.value){this.style.color='#f00'; this.value='placeholder text'; this.haswriting=false;}else{this.haswriting=true};" style="color: #f00;"/>
user1729061
9
Nawet twoja druga wersja nie zapewnia tej samej funkcjonalności. Jeśli użytkownik prześle <form>ten wpis, tekst zastępczy zostanie wysłany na serwer. Widziałem, że tak wiele witryn robi to źle.
lqc
To jest niebezpieczne! Jeśli wrócisz do formy, wszystko straciłeś!
Mobarak Ali
15

Próbowałem tutaj każdej kombinacji, aby zmienić kolor, na mojej platformie mobilnej, i ostatecznie było to:

-webkit-text-fill-color: red;

co załatwiło sprawę.

aviram83
źródło
2
This property allows you to specify a fill color for text. If it is not set, then the color property will be used to do the fill.Wydaje mi się, że masz inną regułę CSS, która ustawia colorwłaściwość.
David Murdoch,
8

Dla użytkownika SASS / SCSS korzystającego z Bourbon ma on wbudowaną funkcję.

//main.scss
@import 'bourbon';

input {
  width: 300px;

  @include placeholder {
    color: red;
  }
}

Wyjście CSS, możesz również pobrać tę część i wkleić do swojego kodu.

//main.css

input {
  width: 300px;
}

input::-webkit-input-placeholder {
  color: red;
}
input:-moz-placeholder {
  color: red;
}
input::-moz-placeholder {
  color: red;
}
input:-ms-input-placeholder {
  color: red;
}
trungk18
źródło
8

wypróbuj ten kod dla innego elementu wejściowego w innym stylu

your css selector::-webkit-input-placeholder { /*for webkit */
    color:#909090;
    opacity:1;
}
 your css selector:-moz-placeholder { /*for mozilla */
    color:#909090;
    opacity:1;
}
 your css selector:-ms-input-placeholder { /*for for internet exprolar */ 
   color:#909090;
   opacity:1;
}

Przykład 1:

input[type="text"]::-webkit-input-placeholder { /*for webkit */
    color: red;
    opacity:1;
}
 input[type="text"]:-moz-placeholder { /*for mozilla */
    color: red;
    opacity:1;
}
 input[type="text"]:-ms-input-placeholder { /*for for internet exprolar */ 
   color: red;
   opacity:1;
}

przykład 2:

input[type="email"]::-webkit-input-placeholder { /*for webkit */
    color: gray;
    opacity:1;
}
 input[type="email"]:-moz-placeholder { /*for mozilla */
    color: gray;
    opacity:1;
}
 input[type="email"]:-ms-input-placeholder { /*for for internet exprolar */ 
   color: gray;
   }
Md. Abu Sayed
źródło
5

Oto jeszcze jeden przykład:

.form-control::-webkit-input-placeholder {
  color: red;
  width: 250px;
}
h1 {
  color: red;
}
<div class="col-sm-4">
  <input class="form-control" placeholder="Enter text here.." ng-model="Email" required/>
</div>

Mahendra Kulkarni
źródło
5

Dodanie rzeczywistej bardzo ładnej i prostej możliwości: filtry css !

wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj

Stylizuje wszystko, w tym symbol zastępczy.

Poniższe spowoduje ustawienie obu danych wejściowych na tej samej palecie, przy użyciu filtra odcienia do zmiany koloru. Teraz renderuje się bardzo dobrze w przeglądarkach (z wyjątkiem np. ...)

input {
  filter: sepia(100%) saturate(400%) grayscale(0) contrast(200%) hue-rotate(68deg) invert(18%);
}
<input placeholder="Hello world!" />
<input type="date" /><br>
<input type="range" />
<input type="color" />

Aby umożliwić użytkownikom dynamiczną zmianę za pomocą zmian typu koloru wejściowego lub znalezienie niuansów, sprawdź ten fragment:

Od: https://codepen.io/Nico_KraZhtest/pen/bWExEB

function stylElem() {
  stylo.dataset.hue = ((parseInt(stylo.value.substring(1), 16))/46666).toFixed(0)
  Array.from(document.querySelectorAll('input, audio, video')).forEach(function(e){
      e.style.cssText += ";filter:sepia(100%) saturate(400%)grayscale(0)contrast(200%)hue-rotate("+ stylo.dataset.hue+"deg)invert("+(stylo.dataset.hue/3.6)+"%)"
  out.innerText = e.style.cssText
})()}

stylElem()
<div id="out"></div> <p>
  <input placeholder="Hello world!" />
  <input type="date" /><br>
  <input type="range" />
  <input type="color" />
Colors (change me)-> 
<input type="color" id="stylo" oninput="stylElem()" /> <br><br>
<audio controls src="#"></audio> <br><br> 
<video controls src="#"></video>

Filtry CSS dokumenty: https://developer.mozilla.org/en-US/docs/Web/CSS/filter

Cryptopat
źródło
4

OK, symbole zastępcze zachowują się inaczej w różnych przeglądarkach, więc musisz użyć prefiksu przeglądarki w swoim CSS, aby były identyczne, na przykład Firefox domyślnie zapewnia przezroczystość symbolu zastępczego, więc musisz dodać krycie 1 do css, plus kolor, to nie jest to duży problem przez większość czasu, ale dobrze, aby były spójne:

*::-webkit-input-placeholder { /* WebKit browsers */
    color:    #ccc;
}
*:-moz-placeholder { /* Mozilla Firefox <18 */
    color:    #ccc;
    opacity:  1;
}
*::-moz-placeholder { /* Mozilla Firefox 19+ */
    color:    #ccc;
    opacity:  1;
}
*:-ms-input-placeholder { /* Internet Explorer 10-11 */
    color:    #ccc;
}
Alireza
źródło
3

Możesz zmienić kolor zastępczy wejścia HTML5 za pomocą CSS. Jeśli przypadkiem Twój konflikt CSS działa, ta notatka kodu działa, możesz użyć (! Ważne) jak poniżej.

::-webkit-input-placeholder { /* WebKit, Blink, Edge */
    color:#909 !important;
}
:-moz-placeholder { /* Mozilla Firefox 4 to 18 */
   color:#909 !important;
   opacity:1 !important;
}
::-moz-placeholder { /* Mozilla Firefox 19+ */
   color:#909 !important;
   opacity:1 !important;
}
:-ms-input-placeholder { /* Internet Explorer 10-11 */
   color:#909 !important;
}
::-ms-input-placeholder { /* Microsoft Edge */
   color:#909 !important;
}

<input placeholder="Stack Snippets are awesome!">

Mam nadzieję, że to pomoże.

Deepak Kumar
źródło
3

Możesz użyć tego do stylu wprowadzania i fokusu:

input::-webkit-input-placeholder  { color:#666;}
input:-moz-placeholder  { color:#666;}
input::-moz-placeholder { color:#666;}
input:-ms-input-placeholder  { color:#666;}
/* focus */
input:focus::-webkit-input-placeholder { color:#eee; }
input:focus:-moz-placeholder { color:#eee } /* FF 4-18 */
input:focus::-moz-placeholder { color:#eee } /* FF 19+ */
input:focus:-ms-input-placeholder { color:#eee } /* IE 10+ */
fraweb
źródło
2

Najprostszym sposobem byłoby:

#yourInput::placeholder {
    color: red;/*As an example*/
}
/* if that would not work, you can always try styling the attribute itself: */
#myInput[placeholder] {
    color: red;
}
codeWithMe
źródło
1

Oto rozwiązanie z selektorami CSS

::-webkit-input-placeholder { /* WebKit, Blink, Edge */
    color:    #909;
}
:-moz-placeholder { /* Mozilla Firefox 4 to 18 */
   color:    #909;
   opacity:  1;
}
::-moz-placeholder { /* Mozilla Firefox 19+ */
   color:    #909;
   opacity:  1;
}
::-ms-input-placeholder { /* Microsoft Edge */
   color:    #909;
}
:-ms-input-placeholder { /* Internet Explorer 10-11 */
   color:    #909;
}
  • WebKit, Blink (Safari, Google Chrome, Opera 15+) i Microsoft Edge używają pseudoelementu:
    :: - webkit-input-placeholder.
  • Mozilla Firefox od 4 do 18 używa pseudoklasy
    :: -moz-placeholder (jeden dwukropek).
    Mozilla Firefox 19+ używa pseudoelementu:
    :: - moz-placeholder, ale stary selektor nadal będzie działał przez chwilę.
  • Internet Explorer 10 i 11 używają pseudoklasy
    :: -ms-input-placeholder.
  • Internet Explorer 9 i nowsze wersje w ogóle nie obsługują atrybutu symbolu zastępczego, podczas gdy Opera 12 i nowsze wersje nie obsługują selektora CSS dla symboli zastępczych.
Mohammad Ayoub Khan
źródło
0

Część HTML:

 <form action="www.anything.com">
 <input type="text" name="name"
  placeholder="Enter sentence"/>
  </form>

Pokażę, jak zmienić kolor wyrażenia „Wpisz zdanie” przez CSS:

  ::placeholder{
  color:blue;
   }
dev_cc
źródło