Wir erhielten einen netten Tipp von Lydia Dugger per E-Mail mit einer Methode, um die Stile zu ändern, die WebKit-Browser auf Formularfelder anwenden, die automatisch ausgefüllt wurden.
Was wir mit Autocomplete meinen
Viele Browser (darunter Chrome und Safari) bieten eine Einstellung, die es Benutzern ermöglicht, Details für gängige Formularfelder automatisch auszufüllen. Das haben Sie bestimmt schon bemerkt, wenn Sie ein Formular ausgefüllt haben, das nach Angaben wie Name, Adresse und E-Mail fragt.
Der Haken ist, dass Benutzer diese Einstellung aktiviert haben müssen, damit dieser Snippet wirksam ist. Wenn die Einstellung aktiviert ist, werden WebKit-Browser die Felder, die sie für den Benutzer automatisch ausgefüllt hat, wie folgt stylen:

Bemerken Sie, wie die automatisch ausgefüllten Felder einen gelben Hintergrund haben? Darauf beziehen wir uns und werden wir mit diesem Snippet ändern.
Der Snippet
Wir können die Pseudo-Klasse -webkit-autofill verwenden, um diese Felder anzusprechen und sie nach Belieben zu stylen. Das Standard-Styling beeinflusst nur die Hintergrundfarbe, aber die meisten anderen Eigenschaften wie border und font-size gelten hier. Wir können sogar die Farbe des Textes mit -webkit-text-fill-color ändern, was im folgenden Snippet enthalten ist.
/* Change Autocomplete styles in Chrome*/
input:-webkit-autofill,
input:-webkit-autofill:hover,
input:-webkit-autofill:focus,
textarea:-webkit-autofill,
textarea:-webkit-autofill:hover,
textarea:-webkit-autofill:focus,
select:-webkit-autofill,
select:-webkit-autofill:hover,
select:-webkit-autofill:focus {
border: 1px solid green;
-webkit-text-fill-color: green;
-webkit-box-shadow: 0 0 0px 1000px #000 inset;
transition: background-color 5000s ease-in-out 0s;
}
Demo
Sehen Sie den Pen Autocomplete-Stile in WebKit ändern von CSS-Tricks (@css-tricks) auf CodePen.
Wie erreiche ich, dass das Autocomplete stattfindet? Ich habe versucht, das Formular abzuschicken, aber es passiert nichts.
Das ist eine Einstellung in Ihrem Browser. Es ist ziemlich eigenartig. Wenn Sie zum Beispiel die Autocomplete-Vorschläge in einem Feld zuvor abgelehnt haben, werden diese Vorschläge nicht mehr angeboten – zumindest ist das heute der Fall.
Ich habe es jetzt. In meinen Chrome-Einstellungen musste ich nur "Autofill verwenden, um Webformulare mit einem Klick auszufüllen" aktivieren und eine Straßenadresse unter "Autofill-Einstellungen verwalten" hinzufügen. Ziemlich cool!
Darf ich nur sagen, dass das großartig ist!
Außerdem fehlt am Ende von Zeile 4 ein Komma im CSS und in Zeile 5 des Beispiels gibt es eine zusätzliche Deklaration von
input:-webkit-autofill.Alternativ müssen Sie
select,input,textareanicht separat angeben.Sie können einfach das hier tun
Das werde ich definitiv in meinen Projekten verwenden!
Gibt es eine Möglichkeit, auch das Dropdown-Menü zu stylen? Es wäre cool, dem Styling hinzuzufügen. Ich habe auch ein Problem, bei dem es ein Modal überlappt und ich möchte den Z-Index des Dropdown-Teils anpassen.
Ich bezweifle, dass es das gibt, da das Menü vom Browser gehandhabt wird.
Danke! Ich habe den ganzen Tag damit gekämpft.
Vielen Dank! Das hat mich fast 2 Jahre lang genervt.
Durch den Abgleich des :-webkit-autofill-Stylings mit den Standardzuständen konnte ich die beiden Zustände identisch aussehen lassen. Das war für mich unerlässlich, da das Standardgelb auf meiner dunkel thematisierten Website wie Müll aussah.
Viele Grüße :)
Ich möchte diesen gelben (oder bernsteinfarbenen) Hintergrund für das Lesen von Zeitungen, bei denen der reine weiße Standardhintergrund meine Netzhaut verbrennt. Vor Jahren bot der native Browser von OS/2 einfach zu bedienende Optionen für den Seitenhintergrund. Brauche hier einen Hinweis.
Hallo!
Ich habe das Problem auch so gelöst – vielen Dank. Aber ich habe immer noch ein Problem mit dem Cursor – tatsächlich kann man ihn in Ihrer Demo auf der Seite sehen — selbst wenn Sie einen Stil haben, der sich vom Autocomplete unterscheidet – nachdem Sie ihn benutzt haben, wird Ihr Cursor schwarz, obwohl er grün sein sollte, aber er ist schwarz – http://joxi.ru/Vrwn36QH96NGAX
Weiß jemand, wie man das beheben kann?
Hmm, das funktioniert bei mir nicht..
Irgendwelche Ideen? Ich bin auf Chrome 61
Ich bin auf Chrome 63 und es funktioniert auch nicht. Ich habe recherchiert und auf der Entwicklerseite von Mozilla steht, dass dies eine nicht standardmäßige Funktion ist und "es auch große Inkompatibilitäten zwischen den Implementierungen geben kann und sich das Verhalten in Zukunft ändern kann". Ich nehme an, dass sich das Verhalten mit den neuen Versionen von Chrome geändert hat.
Ja, Chrome wurde seit der Erstellung dieses Snippets aktualisiert. In Safari 11 funktioniert es noch.
Okay, das ist alles schön und gut, aber wie sieht es mit der Vorschlagsliste aus, die unter dem Eingabefeld erscheint? Können wir auch anpassen, wie sie über Webkit aussieht? Ich möchte sie anpassen, damit sie nahtlos wie ein Teil meiner Projekte mit CSS-Frameworks aussieht.
Es lohnt sich zu erwähnen, dass Farbe und Hintergrundfarbe nicht überschrieben werden können – daher der
-webkit-text-fill-colorund der Box-Shadow-Hack. Ich vermute, dass alle Werte, die in den Standardeinstellungen des User Agents (zu denen derzeit auch background-image gehört) für diese Selektoren angegeben sind, nicht überschrieben werden können.Tatsächlich habe ich eine Lösung gefunden, um das mit Keyframes zu überschreiben
https://stackoverflow.com/questions/2781549/removing-input-background-colour-for-chrome-autocomplete
@Tiago Coelho: Funktioniert wie erwartet – du bist großartig! =D
@Tiago Coelho: Danke, es funktioniert!
Romain Mascia hat einen Weg mitgeteilt
https://codepen.io/romulusmaxia/pen/aKKbPm
Ich kann sehen, dass "transition" perfekt funktioniert, sogar ohne "box-shadow", um den gelben Hintergrund des Chrome Autocomplete-Stils zu deaktivieren, aber ich verstehe nicht wirklich wie / warum, kann mir das jemand erklären?
Weiß jemand, wie man das Autocomplete-Popup per HTML vollständig deaktivieren kann?
Ihr Beispiel lässt das Autocomplete-Feld beim Scrollen statisch auf dem Bildschirm. Sieht nicht gut aus. Diese gesamte Autocomplete-Sache, die Chrome macht, ist das SCHLIMMSTE. Ich kann nicht glauben, dass man es nicht deaktivieren kann. Ich habe alles versucht, einschließlich des programmatischen Hinzufügens eines Nullbreiten-Nichtdruckzeichens zu jedem fokussierten leeren Feld. Aber dann öffnet Chrome ein leeres Fenster (das meine Labels verdeckt). Chrome muss das wirklich in Ordnung bringen. Was für ein totales Durcheinander.
Danke für Ihre Hilfe.
Funktionierte gut in Chrome, FF und Midori! Sollten wir uns darum kümmern – oder einige Zeilen hinzufügen – für andere Browser?
Danke! Guter Code
Warum setzt man die Streuung auf 1000px? -webkit-box-shadow: 0 0 0px 1000px #000 inset;
Die Autocomplete-Stile haben sich in WebKit seit der Veröffentlichung geändert. Wenn ich mich richtig erinnere, war das eine Möglichkeit, einen der Standardstile zu kompensieren.
Ich bin hierher gekommen, weil ich den Sprung der Schriftgröße vermeiden möchte, nachdem ein Benutzer eine Autocomplete-Option ausgewählt hat. Es scheint jedoch keine Wirkung zu haben. Haben Sie das jemals durch Änderung von WebKit-Stilen erreicht?
Ich wollte dasselbe tun. Wenn man mit der Maus über eine Auswahl fährt, wird sie als kleiner Text im Eingabefeld angezeigt, und wenn man die Option auswählt, wird der Text viel größer.
Hat jemand eine Lösung dafür gefunden?
Ich habe es mit dem Animations-Workaround versucht, konnte es aber nicht zum Laufen bringen
und ich habe den Vorschlag von 'wojtekmaj' (siehe weiter unten) ausprobiert, aber das hat auch nicht funktioniert.
Danke, sehr hilfreicher Artikel! Ich habe jedoch einen Vorschlag: Wenn das Autocomplete-Styling aktiv ist, ist es nützlich,
caret-color=#ffffff(oder eine beliebige gewünschte Farbe für Kontrast) manuell zu setzen, wenn die Hintergrundfarbe des Autocomplete-Feldes dunkel ist.Das ist jetzt mit dem neuesten Chrome-Update veraltet
Ich habe gerade versucht, dieses Ergebnis sauberer zu schreiben. Das funktioniert übrigens immer noch in meinem Browser.
transition: background-color 0s;
transition-delay: 600s;
Ich habe das versucht, aber wie ändere ich die
font-sizedes Autocomplete?Für -webkit-autofill hat das für mich funktioniert
Dieser Code funktioniert nicht, wenn man versucht, die Hintergrundfarbe festzulegen, d.h.
background-color: red
Weiß jemand, wie das geht?
Der Standardwert von WebKit für die Eigenschaft
-webkit-box-shadowmuss überschrieben werden, und so habe ich die Hintergrundfarbe bei Autocomplete geändert:-webkit-box-shadow: 0 0 0px 1000px #000 inset;Ändern Sie den Wert von
#000in eine andere Farbe, und Sie sollten alles in Ordnung haben!Hat jemand Probleme damit unter Chrome+iOS?
Fun Fact: Es funktioniert gut unter Safari+iOS
input:-webkit-autofill,
input:-webkit-autofill:hover,
input:-webkit-autofill:focus,
textarea:-webkit-autofill,
textarea:-webkit-autofill:hover,
textarea:-webkit-autofill:focus,
select:-webkit-autofill,
select:-webkit-autofill:hover,
select:-webkit-autofill:focus {
border: 1px solid transparent !important;
-webkit-box-shadow: 0 0 0px 1000px transparent inset !important;
transition: background-color 5000s ease-in-out 0s !important;
}
Transparent funktioniert hier nicht. Ich bin sicher, Sie versuchen, die Eingabefelder transparent zu machen, was bedeutet, dass sie keine Farbe haben.