Chrome obsługuje atrybut zastępczy dla input[type=text]
elementów (inni prawdopodobnie też tak robią).
Ale poniższe wartości CSS
nie mają wpływu na wartość obiektu zastępczego:
input[placeholder], [placeholder], *[placeholder] {
color: red !important;
}
<input type="text" placeholder="Value">
Value
nadal pozostanie grey
zamiast red
.
Czy istnieje sposób na zmianę koloru tekstu zastępczego?
css
html
placeholder
html-input
David Murdoch
źródło
źródło
<input>
tagu, takiego jakinput
selektor, ale pokazuje teraz tekst zastępczy. Nie pasuje również do samego atrybutu zastępczego.input
selektor, ponieważ wybiera wszystkieinput
elementy.:placeholder-shown
wybiera tylkoinput
elementy, które obecnie pokazują symbol zastępczy, pozwalając stylizować tylko te elementy i skutecznie stylizować tekst zastępczy. Co próbujesz powiedzieć?textarea
elementy, które wyświetlają tekst zastępczy.)Odpowiedzi:
Realizacja
Istnieją trzy różne implementacje: pseudoelementy, pseudoklasy i nic.
::-webkit-input-placeholder
. [ Ref ]:-moz-placeholder
( jeden dwukropek). [ Ref ]::-moz-placeholder
ale stary selektor jeszcze przez jakiś czas będzie działał. [ Ref ]:-ms-input-placeholder
. [ Ref ]::placeholder
[ Ref ]Internet Explorer 9 i nowsze wersje w ogóle nie obsługują tego
placeholder
atrybutu, 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
padding
nainput
nie 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 :
Potrzebujemy więc osobnych reguł dla każdej przeglądarki. W przeciwnym razie cała grupa byłaby ignorowana przez wszystkie przeglądarki.
Uwagi dotyczące użytkowania
opacity: 1
tutaj.em
i 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.placeholder
Należy również przetestować przeglądarki z obsługą HTML, ale bez obsługi CSS (np. Opera).input
typów (email
,search
). Mogą one wpływać na renderowanie w nieoczekiwany sposób. Użyj właściwości-webkit-appearance
i,-moz-appearance
aby to zmienić. Przykład:źródło
*:-ms-input-placeholder
i:-ms-input-placeholder
sama nie działa, aleINPUT:-ms-input-placeholder
działa. Dziwny.Spowoduje to styl wszystkich
input
itextarea
symboli 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).
źródło
Możesz także stylizować obszary tekstowe:
źródło
Dla użytkowników Bootstrap i Less istnieje mixin .placeholder:
źródło
@input-color-placeholder
- zwykle znajdującą się w zmiennych.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-decoration
atext-transform
kiedy stylizacji zastępczy.Pełne porównanie różnych przeglądarek jest tutaj .
źródło
Dla użytkowników Sass :
źródło
@content;
To zadziała dobrze. DEMO TUTAJ:
źródło
W przeglądarkach Firefox i Internet Explorer normalny kolor tekstu wejściowego przesłania właściwość koloru symboli zastępczych. Więc musimy
źródło
Rozwiązanie dla różnych przeglądarek:
Źródło: David Walsh
źródło
Użyj nowego,
::placeholder
jeśli używasz autoprefixera .Zauważ, że mix .placeholder z Bootstrap jest przestarzały na korzyść tego.
Przykład:
Podczas korzystania z autoprefixera powyższe zostaną przekonwertowane na poprawny kod dla wszystkich przeglądarek.
źródło
Teraz mamy standardowy sposób na zastosowanie CSS do symbolu zastępczego wejścia:
::placeholder
pseudoelement z tego szkicu modułu 4 poziomu CSS.źródło
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.
Zastępuję znak „
opacity
1”, więc dobrze będzie zacząć.źródło
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ł).
Wystarczy załadować ten kod JavaScript, a następnie edytować symbol zastępczy za pomocą CSS, wywołując tę regułę:
źródło
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:
źródło
::placeholder
razem z autoprefixerem.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:Lub jeśli używasz Mniej :
źródło
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:
źródło
Ten krótki i przejrzysty kod:
źródło
Co powiesz na to
Brak CSS lub symbolu zastępczego, ale masz tę samą funkcjonalność.
źródło
<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;"/>
<form>
ten wpis, tekst zastępczy zostanie wysłany na serwer. Widziałem, że tak wiele witryn robi to źle.Próbowałem tutaj każdej kombinacji, aby zmienić kolor, na mojej platformie mobilnej, i ostatecznie było to:
co załatwiło sprawę.
źródło
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 ustawiacolor
właściwość.Dla użytkownika SASS / SCSS korzystającego z Bourbon ma on wbudowaną funkcję.
Wyjście CSS, możesz również pobrać tę część i wkleić do swojego kodu.
źródło
wypróbuj ten kod dla innego elementu wejściowego w innym stylu
Przykład 1:
przykład 2:
źródło
Oto jeszcze jeden przykład:
źródło
Dodanie rzeczywistej bardzo ładnej i prostej możliwości: filtry css !
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. ...)
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
Filtry CSS dokumenty: https://developer.mozilla.org/en-US/docs/Web/CSS/filter
źródło
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:
źródło
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.
Mam nadzieję, że to pomoże.
źródło
Możesz użyć tego do stylu wprowadzania i fokusu:
źródło
Najprostszym sposobem byłoby:
źródło
Kompas ma gotowy do tego miks.
Weź przykład:
A w SCSS za pomocą kompasu:
Zobacz dokumentację dla mixinu zastępczego danych wejściowych.
źródło
Oto rozwiązanie z selektorami CSS
:: - webkit-input-placeholder.
:: -moz-placeholder (jeden dwukropek).
Mozilla Firefox 19+ używa pseudoelementu:
:: - moz-placeholder, ale stary selektor nadal będzie działał przez chwilę.
:: -ms-input-placeholder.
źródło
Część HTML:
Pokażę, jak zmienić kolor wyrażenia „Wpisz zdanie” przez CSS:
źródło