Platzhalter – ein Eingabefeldelement, in dem Sie einen Hinweis platzieren können. Wenn der Benutzer beginnt, Daten einzugeben, verschwindet der Hilfetext, um nicht zu stören. Jeder Browser hat seine eigene Meinung darüber, wie dieses Element angezeigt werden sollte, und manchmal brechen die Standardstile das gesamte Design. Um sie zu steuern, müssen Sie eine spezielle Platzhalter-CSS-Regel verwenden.
Wo ist der Platzhalter?
Das Problem ist, dass der Hinweis auf das Eingabefeld sicher im Schatten-DOM versteckt ist und nicht so leicht zu erreichen ist. Dafür wird ein spezielles Nicht-Standard-Pseudo-Element CSS::placeholder verwendet. Damit können Sie die Eigenschaften des Tooltips steuern.
Sie werden interessiert sein:
Das Stylen des Platzhalters in CSS sieht so aus:
input::placeholder ( Farbe: rot; Deckkraft: 1; Schriftstil: kursiv; )
Browser-Unterstützung
Das CSS-Platzhalter-Pseudo-Element wird von allen gut gehandhabt moderne Browser, und um ältere Browser zu unterstützen, können Sie Präfixe verwenden:
- ::-webkit-input-placeholder - für Webkit-Browser (Safari, Chrome, Opera);
- ::-moz-Platzhalter - für Firefox-Browserüber Version 19;
- :-moz-placeholder - für alten Firefox;
- :-ms-Eingabeplatzhalter - für Internet Explorerüber Version 10.
Wie Sie sehen können, betrachten ältere Mozilla-Browser sowie IE den Platzhalter als eine CSS-Pseudo-Klasse, nicht als ein Pseudo-Element. Wir werden nicht mit ihnen streiten, wir werden diesen Aspekt nur beim Styling des Eingabefelds berücksichtigen.
Styling-Optionen
Für das Platzhalter-Pseudo-Element in CSS können Sie festlegen folgenden Parameter:
- background - eine Gruppe von Hintergrundeigenschaften. Der Hintergrund des Hinweisblocks erstreckt sich über das gesamte Eingabefeld. Sie können nicht nur die Farbe (background-color), sondern auch das Bild (background-image) einstellen.
- Textfarbe - Farbe;
- Transparenz - Opazität;
- unterstrichen, überstrichen oder durchgestrichen - Textdekoration;
- register - Texttransformation;
- Polsterung - Polsterung. Nicht von allen Browsern unterstützt. Wie bei Inline-Elementen wird das Auffüllen oben und unten ignoriert.
- Schriftanzeige - Eigenschaften der Schriftgruppe, Zeilenhöhe und verschiedene Einzüge (Texteinzug, Buchstabenabstand, Wortabstand);
- vertikale Ausrichtung in Linie - vertikal-ausrichten;
- Abschneiden von Text, wenn der Container überläuft - Textüberlauf.
Input1::placeholder ( Hintergrundbild: linear-gradient(lime, blue); color: white; ) .input2::placeholder ( text-decoration: line-through; color: purple; font-weight: bold; ) .input3 ::placeholder ( Schriftgröße: 16px; Buchstabenabstand: 10px; ) .input4::placeholder ( Hintergrund: braun; Farbe: weiß; Textüberlauf: Auslassungspunkte; )
Im Fokus
Standardmäßig verschwindet der Hinweis nur dann aus dem Eingabefeld, wenn mindestens ein Zeichen darin eingegeben wird. Aber das CSS-Platzhalter-Pseudo-Element ermöglicht es Ihnen, das Verschwinden sofort zu implementieren, wenn das Feld fokussiert wird. Dazu müssen Sie es mit der Pseudoklasse :focus kombinieren.
input:focus::placeholder ( Farbe: transparent; )
In einigen Browsern ist es akzeptabel, eine Änderung in einer Reihe von Platzhaltereigenschaften mit der Übergangsanweisung zu animieren.
input::placeholder ( Farbe: schwarz; Übergang: Farbe 1s; ) input:focus::placeholder ( Farbe: weiß; )
Im Browser Google Chrome die Farbe des Hinweises beim Fokussieren auf ein solches Feld ändert sich fließend innerhalb einer Sekunde.
Platzhalter, diese häufig ausgegrauten Textelemente in einer Eingabe, können schwierig zu gestalten sein. Glücklicherweise haben wir eine kurze, aber effektive CSS-Lösung gefunden, um den Platzhaltertext Ihrer Eingabe in jeder gewünschten Farbe und Deckkraft zu gestalten. Lesen Sie weiter für den Code.
Textfarbe des Platzhalters ändern
Beginnen wir mit einer einfachen Eingabe und etwas Platzhaltertext. Für dieses Beispiel verwenden wir das Wort "Suche", aber Sie können alles verwenden, was Sie wollen. Das grundlegende HTML ist unten:
HTML
Der Platzhaltertext für die Eingabe (und den Textbereich) hat standardmäßig eine hellgraue Farbe, aber wir können dies mit ein paar Zeilen CSS ändern. Hier färben wir den Eingabetext mithilfe eines HTML-Farbnamens rot, aber jede Farbmethode ist ausreichend (HEX, RGB, HSL).
css
::-webkit-input-placeholder ( /* Chrome */ color: red; ) :-ms-input-placeholder ( /* IE 10+ */ color: red; ) ::-moz-placeholder ( /* Firefox 19 + */ Farbe: rot; Deckkraft: 1; ) :-moz-placeholder ( /* Firefox 4 - 18 */ Farbe: rot; Deckkraft: 1; )Beachten Sie, dass es wichtig ist, die verschiedenen Anbieterpräfixe einzubeziehen, um so viele Browser wie möglich zu unterstützen. Nur der Eingabeplatzhaltertext von Firefox ist standardmäßig leicht transparent, sodass es unnötig ist, die Opazitätseigenschaft in IE oder Chrome festzulegen.
Fokustextfarbe des Platzhalters ändern
In Ordnung, wir haben die Farbe des Platzhaltertextes erfolgreich in Rot geändert, aber es wäre schön, wenn etwas passieren würde, wenn ein Benutzer in unsere Eingabe klickt. Mit denselben CSS-Eigenschaften mit Anbieterpräfix können wir die Deckkraft des Eingabeplatzhaltertexts ändern im Fokus.
css
input ( outline: none; padding: 12px; border-radius: 3px; border: 1px solid black; ) ::-webkit-input-placeholder ( /* Chrome */ color: red; transition: opacity 250ms ease-in-out ; ) :focus::-webkit-input-placeholder ( Deckkraft: 0,5; ) :-ms-input-placeholder ( /* IE 10+ */ Farbe: rot; Übergang: Deckkraft 250 ms Ease-in-out; ) :focus :-ms-input-placeholder ( Deckkraft: 0,5; ) ::-moz-placeholder ( /* Firefox 19+ */ Farbe: rot; Deckkraft: 1; Übergang: Deckkraft 250 ms Ease-in-out; ) :focus:: -moz-Platzhalter ( Deckkraft: 0,5; ) :-moz-Platzhalter ( /* Firefox 4 - 18 */ Farbe: rot; Deckkraft: 1; Übergang: Deckkraft 250 ms Ease-in-out; ) :focus:-moz-placeholder ( Deckkraft: 0,5; )Im obigen Beispiel haben wir einige grundlegende Stile in die Eingabe selbst eingefügt und einen Übergang zur Deckkraft hinzugefügt, um das Erlebnis ein wenig angenehmer zu gestalten. Sehen Sie sich die Demo an und experimentieren Sie mit anderen CSS-Eigenschaften und -Übergängen.
Platzhalter – ein Eingabefeldelement, in dem Sie einen Hinweis platzieren können. Wenn der Benutzer beginnt, Daten einzugeben, verschwindet der Hilfetext, um nicht zu stören. Jeder Browser hat seine eigene Meinung darüber, wie dieses Element angezeigt werden sollte, und manchmal brechen die Standardstile das gesamte Design. Um sie zu steuern, müssen Sie eine spezielle Platzhalter-CSS-Regel verwenden.
Wo ist der Platzhalter?
Das Problem ist, dass der Hinweis auf das Eingabefeld sicher im Schatten-DOM versteckt ist und nicht so leicht zu erreichen ist. Dafür wird ein spezieller nicht standardmäßiger ::Platzhalter verwendet. Damit können Sie die Eigenschaften des Tooltips steuern.
Das Stylen des Platzhalters in CSS sieht so aus:
Input::placeholder ( Farbe: rot; Deckkraft: 1; Schriftstil: kursiv; )
Browser-Unterstützung
Das CSS-Platzhalter-Pseudoelement wird von allen modernen Browsern gut verarbeitet, und Präfixe können verwendet werden, um ältere Browser zu unterstützen:
- ::-webkit-input-placeholder - für Webkit-Browser (Safari, Chrome, Opera);
- ::-moz-placeholder - für Firefox-Browser ab Version 19;
- :-moz-placeholder - für alten Firefox;
- :-ms-input-placeholder - für Internet Explorer ab Version 10.
Wie Sie sehen können, betrachten ältere Mozilla-Browser sowie IE den Platzhalter als eine CSS-Pseudo-Klasse, nicht als ein Pseudo-Element. Wir werden nicht mit ihnen streiten, wir werden diesen Aspekt nur beim Styling des Eingabefelds berücksichtigen.
Styling-Optionen
Folgende Optionen können Sie für das Platzhalter-Pseudo-Element in CSS einstellen:
- Hintergrund - Hinweisblockgruppe gilt für das gesamte Eingabefeld. Sie können nicht nur die Farbe (background-color), sondern auch das Bild (background-image) einstellen.
- Textfarbe - Farbe;
- Transparenz - Opazität;
- unterstrichen, überstrichen oder durchgestrichen - Textdekoration;
- register - Texttransformation;
- Polsterung - Polsterung. Nicht von allen Browsern unterstützt. Wie bei Inline-Elementen wird das Auffüllen oben und unten ignoriert.
- Schriftanzeige - Eigenschaften der Schriftgruppe, Zeilenhöhe und verschiedene Einzüge (Texteinzug, Buchstabenabstand, Wortabstand);
- vertikale Ausrichtung in Linie - vertikal-ausrichten;
- Abschneiden von Text, wenn der Container überläuft - Textüberlauf.
Im Fokus
Standardmäßig verschwindet der Hinweis nur dann aus dem Eingabefeld, wenn mindestens ein Zeichen darin eingegeben wird. Der Platzhalter ermöglicht es Ihnen jedoch, das Verschwinden sofort zu implementieren, wenn Sie sich auf das Feld konzentrieren. Dazu müssen Sie es mit der Pseudoklasse :focus kombinieren.
Input:focus::placeholder ( Farbe: transparent; )
In einigen Browsern ist es akzeptabel, eine Änderung in einer Reihe von Platzhaltereigenschaften mit der Übergangsanweisung zu animieren.
Input::placeholder ( Farbe: schwarz; Übergang: Farbe 1s; ) input:focus::placeholder ( Farbe: weiß; )
BEI Google-Browser Die Chrome-Tooltip-Farbe beim Fokussieren auf ein solches Feld ändert sich reibungslos innerhalb einer Sekunde.
Das placeholder-Attribut wird verwendet, um Tooltips in leeren Eingabefeldern (tags und
Beginnen wir mit einem Beispiel für diejenigen, die noch nicht wissen, was ein Platzhalter ist und wie man ihn verwendet:
Bei der Entwicklung von Schnittstellen sollten Sie das Verhalten von Platzhaltern berücksichtigen. Der Platzhaltertext verschwindet, sobald die Eingabe beginnt. Sie sollten sie daher nicht verwenden, um Informationen über das Eingabefeld selbst zu übermitteln (wie viele und welche Zeichen es enthalten soll). Verwenden Sie für diese Zwecke am besten das Tag
Stilisierung
Die folgenden Regeln werden verwendet, um Platzhalter zu formatieren:
::-webkit-input-placeholder ( color : blue ; ) ::-moz-placeholder ( color : blue ; ) /* Firefox 19+ */ :-moz-placeholder ( color : blue ; ) /* Firefox 18- * / :-ms-input-placeholder ( Farbe : blau ; )Sieht schrecklich aus, oder? Und das hat einen Grund: CSS-Regeln für Platzhalter sind bisher nicht standardisiert und die Umsetzung in jedem Browser unterschiedlich. Unter caniuse erfahren Sie mehr über alle notwendigen Präfixe.
Wenn Sie einen CSS-Präprozessor verwenden, ist es wahrscheinlich am besten, ein einfaches Mixin zu schreiben, um Platzhalter zu formatieren. Beispiel in Sass:
@mixin placeholder ( & : :- webkit-input-placeholder ( @content ; ) & : - moz-placeholder ( @content ; ) & : :- moz-placeholder ( @content ; ) & : - ms-input-placeholder ( @Inhalt ; ) )Je nach Kontext können mit dem Mixin Stile global oder auf einzelne Elemente angewendet werden (probieren Sie es auf SassMeister aus):
// Global für jedes Eingabefeld@include-Platzhalter ( Farbe : blau ; ) // Für bestimmte Eingabefelder.input ( @include Platzhalter ( Farbe : grün ; ) )Beispiel
Blauer Text für den Platzhalter (niemals tun):
.blue-text ::-webkit-input-placeholder ( color : #2e8ece ; ) .blue-text :-moz-placeholder ( color : #2e8ece ; ) ; ) .blue-text :-ms-input-placeholder ( color : #2e8ece ; )
Unterstützte Eigenschaften
Nicht jede CSS-Eigenschaft kann mit Platzhaltern verwendet werden. Hier volle Liste unterstützte Eigenschaften:
- font und alle dazugehörigen Eigenschaften (font-size , font-family , etc.)
- background und alle zugehörigen Eigenschaften (background-color , background-image , etc.)
- Opazität
- Texteinzug
- Textüberlauf
- Farbe
- Text-Transformation
- Zeilenhöhe
- Wortabstand
- Buchstaben-Abstand
- Textdekoration
- vertikal ausrichten
Animationen
Animationsideen gehören zum Blog html5.by.
Alle folgenden Beispiele wurden mit dem Sass-Präprozessor geschrieben. Jedes enthält einen Link zu SassMeister, wo Sie den kompilierten CSS-Code finden können.
Wahrscheinlich möchten Sie Animationen auf Platzhalter anwenden, wenn der Fokus auf einem Eingabefeld liegt. All dies geschieht ganz einfach. Es reicht aus, den zuvor geschriebenen Platzhalter-Mixin ein paar Mal zu verwenden:
.input( @include Platzhalter( // Stile für den Normalzustand) & :focus ( @include Platzhalter ( // Stile nach dem Fokusereignis } } }Transparenz ändern
.input ( @include Platzhalter ( Farbe : #aaa ; Deckkraft : 1 ; Übergang : Deckkraft 300ms ; ) & :focus ( @include Platzhalter ( Deckkraft : 0 ; ) ) )
Rechts und links verschieben
Je größer die Breite des Eingabefeldes, desto größer sollte der Wert der Eigenschaft text-indent sein. Für ein Standard-Eingabefeld reichen 500 Pixel aus, für breitere sollten Sie manuell auswählen. Die Breite des Eingabefeldes und der Text-Einzugswert bestimmen die Geschwindigkeit der Animation. Um nach links zu verschieben, müssen Sie negative Werte verwenden, zum Beispiel -500px .
Herunterschalten
Wie im vorherigen Beispiel hängt die Animation von der Größe der Eingabe ab, aber achten Sie in diesem Fall auf die Höhe. Für die überwiegende Mehrheit der Eingabefelder liegt die gewünschte Zeilenhöhe innerhalb von 100px . Leider ist es mit der Eigenschaft line-height nicht möglich, den Effekt des Aufsteigens zu implementieren, da die Eigenschaft keine negativen Werte akzeptiert.
.input ( @include Platzhalter ( Texteinzug : 0px ; Übergang : Texteinzug 300ms ; ) & :focus ( @include Platzhalter ( Texteinzug : 500px ; ) ) )
Alle zusammen
Um die Verwendung des Animationscodes für Platzhalter angenehm und bequem zu gestalten, können Sie eine kleine Bibliothek mit Mixins für jeden Präprozessor schreiben. Die Bibliothek sieht so aus ():
@mixin-Platzhalter ( & : :- webkit-input-placeholder ( @content ) & : - moz-placeholder ( @content ) & : :- moz-placeholder ( @content ) & : - ms-input-placeholder ( @content ) ) @mixin pl-shift ($side : left , $position : 500px , $duration : 200ms ) ( @include placeholder ( text-indent : 0 ; transit : text-indent $duration ; ) & :focus ( @include placeholder ( text-indent : if ($side == left , - $position , $position ); ) ) ) @mixin pl-slide-down ($position : 5 , $duration : 200ms ) ( @include placeholder ( line-height : 1 ; Übergang : line-height $duration ; ) & :focus ( @include placeholder ( line-height : $position ; ) ) ) @mixin pl-fade-out ($duration : 200ms ) ( @include placeholder ( opacity : 1 ; Übergang : Deckkraft $Dauer ; ) & :Fokus ( @include Platzhalter ( Deckkraft : 0 ; ) ) )Es ist sehr einfach zu bedienen. Es reicht aus, das gewünschte Mixin mit einem beliebigen Eingabefeld zu verbinden oder einfach eine globale Regel für alle Tempohalter auf der Seite zu erstellen:
// Für einzelne Elemente.pl-shift-right ( @include pl-shift ( rechts ); ) .pl-fade-out ( @include pl-fade-out ; ) // Für alles andere@include pl-shift ( links );Autoprefixer
Wenn Sie keinen Präprozessor verwenden und trotzdem nicht möchten, dass Ihre CSS-Quelldatei zu einem Durcheinander von Präfixen für alle möglichen Browser wird, dann werfen Sie einen Blick auf Autoprefixer . Damit kann reines CSS unsauber gemacht werden (aber in einer anderen Datei), indem allen Eigenschaften alle notwendigen Präfixe hinzugefügt werden. Damit das Plugin mit Paceholdern funktioniert, reicht es aus, pseudo-element::placeholder zu verwenden:
::Platzhalter ( Farbe : orange ; ) . Eingabe : : Platzhalter ( Farbe : blau ; )Nach dem Analysieren Ihrer Stile erstellt Autoprefixer eine separate CSS-Datei, in die alle erforderlichen Präfixe für alle von Ihnen angegebenen Browser geschrieben werden.
Was weiter
Wie ich oben geschrieben habe, ist alles, was mit dem Anwenden von Stilen auf Platzhalter zu tun hat, noch nicht standardisiert. Es wird bald behoben. Eine Pseudo-Klasse wurde der Selector Level 4-Spezifikation hinzugefügt: placeholder-showed , die all diese verrückte Mischung aus Pseudo-Klassen und Pseudo-Elementen, die es jetzt gibt, endlich zum Standard bringen wird. Sie können die Unterstützung auf caniuse überprüfen (derzeit in keinem Browser unterstützt).
Das Anwenden von Stilen mit :placeholder-showd wird viel einfacher:
.input :Platzhalter-angezeigt ( Farbe : blau ; )