Chrome unterstützt das Platzhalterattribut für input[type=text]
Elemente (andere wahrscheinlich auch).
Das Folgende CSS
hat jedoch nichts mit dem Wert des Platzhalters zu tun:
input[placeholder], [placeholder], *[placeholder] {
color: red !important;
}
<input type="text" placeholder="Value">
Value
wird immer noch grey
statt bleiben red
.
Gibt es eine Möglichkeit, die Farbe des Platzhaltertextes zu ändern?
css
html
placeholder
html-input
David Murdoch
quelle
quelle
<input>
Tag überein , wie derinput
Selektor, zeigt aber gerade Platzhaltertext an. Es stimmt auch nicht mit dem Platzhalterattribut selbst überein.input
Selektor, weil dadurch alleinput
Elemente ausgewählt werden.:placeholder-shown
Wählt nurinput
Elemente aus, die derzeit den Platzhalter anzeigen, sodass Sie nur diese Elemente formatieren und den Platzhaltertext effektiv formatieren können. Was versuchst du zu sagen?textarea
Elemente ausgewählt , die PlatzhaltertextAntworten:
Implementierung
Es gibt drei verschiedene Implementierungen: Pseudoelemente, Pseudoklassen und nichts.
::-webkit-input-placeholder
. [ Ref ]:-moz-placeholder
( ein Doppelpunkt). [ Ref ]::-moz-placeholder
aber der alte Selektor funktioniert noch eine Weile. [ Ref ]:-ms-input-placeholder
. [ Ref ]::placeholder
[ Ref ]Internet Explorer 9 und niedriger unterstützt das
placeholder
Attribut überhaupt nicht, während Opera 12 und niedriger keinen CSS-Selektor für Platzhalter unterstützen.Die Diskussion über die beste Implementierung dauert noch an. Beachten Sie, dass die Pseudoelemente wie echte Elemente im Schatten-DOM wirken . A
padding
auf eineminput
erhält nicht die gleiche Hintergrundfarbe wie das Pseudoelement.CSS-Selektoren
Benutzeragenten müssen eine Regel mit einem unbekannten Selektor ignorieren. Siehe Selektorstufe 3 :
Wir brauchen also separate Regeln für jeden Browser. Andernfalls würde die gesamte Gruppe von allen Browsern ignoriert.
Verwendungshinweise
opacity: 1
hier verwendet werden.em
und testen Sie sie mit großen Einstellungen für die Mindestschriftgröße. Vergessen Sie nicht die Übersetzungen: Einige Sprachen benötigen mehr Platz für dasselbe Wort.placeholder
aber ohne CSS-Unterstützung (wie Opera) sollten ebenfalls getestet werden.input
Typen (email
,search
) zusätzliches Standard-CSS . Diese können sich auf unerwartete Weise auf das Rendern auswirken. Verwenden Sie die Eigenschaften-webkit-appearance
und, um dies-moz-appearance
zu ändern. Beispiel:quelle
*:-ms-input-placeholder
und:-ms-input-placeholder
an sich funktioniert das nicht,INPUT:-ms-input-placeholder
tut es aber . Seltsam.Dadurch werden alle
input
undtextarea
Platzhalter formatiert.Wichtiger Hinweis: Gruppieren Sie diese Regeln nicht. Erstellen Sie stattdessen für jeden Selektor eine separate Regel (ein ungültiger Selektor in einer Gruppe macht die gesamte Gruppe ungültig).
quelle
Möglicherweise möchten Sie auch Textbereiche formatieren:
quelle
Für Bootstrap- und Less- Benutzer gibt es einen Mixin-Platzhalter:
quelle
@input-color-placeholder
- normalerweise in variables.lessZusätzlich zu toschos Antwort habe ich einige Webkit-Inkonsistenzen zwischen Chrome 9-10 und Safari 5 mit den unterstützten CSS-Eigenschaften festgestellt, die erwähnenswert sind.
Insbesondere Chrome 9 und 10 nicht unterstützen
background-color
,border
,text-decoration
undtext-transform
wenn Sie den Platzhalter Styling.Der vollständige browserübergreifende Vergleich ist hier .
quelle
Für Sass- Benutzer:
quelle
@content;
Dies wird gut funktionieren. DEMO HIER:
quelle
In Firefox und Internet Explorer überschreibt die normale Farbe des Eingabetextes die Farbeigenschaft von Platzhaltern. Also müssen wir
quelle
Browserübergreifende Lösung:
Bildnachweis: David Walsh
quelle
Verwenden Sie das neue,
::placeholder
wenn Sie Autoprefixer verwenden .Beachten Sie, dass das .placeholder-Mixin von Bootstrap stammt dafür veraltet ist.
Beispiel:
Bei Verwendung von Autoprefixer wird das Obige für alle Browser in den richtigen Code konvertiert.
quelle
Jetzt haben wir eine Standardmethode zum Anwenden von CSS auf den Platzhalter einer Eingabe:
::placeholder
Pseudoelement aus diesem Entwurf des CSS-Moduls Level 4.quelle
Ich habe gerade für Mozilla Firefox 19+ festgestellt, dass der Browser einen Deckkraftwert für den Platzhalter angibt, sodass die Farbe nicht Ihren Wünschen entspricht.
Ich überschreibe die
opacity
für 1, also ist es gut zu gehen.quelle
Ich kann mich nicht erinnern, wo ich dieses Code-Snippet im Internet gefunden habe (es wurde nicht von mir geschrieben, ich kann mich nicht erinnern, wo ich es gefunden habe oder wer es geschrieben hat).
Laden Sie einfach diesen JavaScript-Code und bearbeiten Sie Ihren Platzhalter mit CSS, indem Sie diese Regel aufrufen:
quelle
Ich denke, dieser Code wird funktionieren, da ein Platzhalter nur für Text vom Typ Eingabe benötigt wird. Dieses einzeilige CSS reicht also für Ihre Anforderungen aus:
quelle
::placeholder
zusammen mit dem Autoprefixer verwenden.Wenn Sie Bootstrap- Benutzer verwenden
class="form-control"
, liegt möglicherweise ein CSS-Spezifitätsproblem vor. Sie sollten eine höhere Priorität erhalten:Oder wenn Sie Less verwenden :
quelle
Wenn Sie Bootstrap verwenden und dies nicht zum Laufen bringen konnten, haben Sie wahrscheinlich die Tatsache übersehen, dass Bootstrap selbst diese Selektoren hinzufügt. Dies ist Bootstrap v3.3, über das wir sprechen.
Wenn Sie versuchen, den Platzhalter innerhalb einer .form-control CSS-Klasse zu ändern , sollten Sie ihn folgendermaßen überschreiben:
quelle
Dieser kurze und saubere Code:
quelle
Wie wäre es damit
Kein CSS oder Platzhalter, aber Sie erhalten die gleiche Funktionalität.
quelle
<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>
mit dieser Eingabe übermittelt, wird der Platzhaltertext an den Server gesendet. Ich habe gesehen, dass so viele Websites dies falsch machen.Ich habe hier jede Kombination versucht, um die Farbe auf meiner mobilen Plattform zu ändern, und schließlich war es:
das hat den Trick gemacht.
quelle
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.
Es klingt für mich so, als hätten Sie eine andere CSS-Regel, die diecolor
Eigenschaft festlegt.Für SASS / SCSS-Benutzer, die Bourbon verwenden , ist eine Funktion integriert.
Bei der CSS-Ausgabe können Sie diesen Teil auch abrufen und in Ihren Code einfügen.
quelle
Versuchen Sie diesen Code für verschiedene Eingabeelemente unterschiedlichen Stils
Beispiel 1:
Beispiel 2:
quelle
Hier ist noch ein Beispiel:
quelle
Hinzufügen einer sehr schönen und einfachen Möglichkeit: CSS-Filter !
Es wird alles gestylt, einschließlich des Platzhalters.
Im Folgenden werden beide Eingaben in derselben Palette festgelegt, wobei der Farbtonfilter für die Farbänderung verwendet wird. Es wird jetzt in Browsern sehr gut gerendert (außer ...)
Schauen Sie sich dieses Snippet an, damit Benutzer es dynamisch ändern können, indem Sie eine Eingabetypfarbe für Änderungen verwenden oder Nuancen finden:
Von: https://codepen.io/Nico_KraZhtest/pen/bWExEB
CSS filtert Dokumente: https://developer.mozilla.org/en-US/docs/Web/CSS/filter
quelle
OK, Platzhalter verhalten sich in verschiedenen Browsern unterschiedlich. Sie müssen daher das Browserpräfix in Ihrem CSS verwenden, um sie identisch zu machen. Beispielsweise bietet Firefox Platzhaltern standardmäßig Transparenz. Fügen Sie Ihrem CSS also Deckkraft 1 hinzu, und die Farbe ist dies nicht Meistens ein großes Problem, aber gut, wenn sie konsistent sind:
quelle
Sie können die Platzhalterfarbe einer HTML5-Eingabe mit CSS ändern. Wenn Ihr CSS-Konflikt zufällig funktioniert und dieser Code-Hinweis funktioniert, können Sie (! Wichtig) wie unten verwenden.
Hoffe das wird helfen.
quelle
Sie können dies für den Eingabe- und Fokusstil verwenden:
quelle
Der einfachste Weg wäre:
quelle
Compass hat dafür ein Mixin.
Nehmen Sie Ihr Beispiel:
Und in SCSS mit Kompass:
In den Dokumenten finden Sie Informationen zum Mixin der Eingabe-Platzhalter.
quelle
Hier ist die Lösung mit CSS-Selektoren
Pseudoelement : :: - Webkit-Eingabe-Platzhalter.
Pseudoklasse :: -moz-Platzhalter (ein Doppelpunkt).
Mozilla Firefox 19+ verwendet ein Pseudoelement :
:: - Moz-Platzhalter, aber der alte Selektor funktioniert noch eine Weile.
Pseudoklasse :: -ms-input-placeholder.
quelle
Ein Teil von HTML:
Ich werde zeigen, wie man die Farbe des Ausdrucks von 'Satz eingeben' durch CSS ändert:
quelle