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?


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

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).


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

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

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 .


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

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


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

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


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.


40

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


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ąć.


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. */
}

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

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

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

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

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ść.


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ę.


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

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

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>


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


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

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.


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

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


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.

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;
   }
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.