Pada formulir yang sedang saya kerjakan, Chrome secara otomatis mengisi kolom email dan kata sandi. Ini bagus, namun, Chrome mengubah warna latar belakang menjadi warna kuning pucat.
Desain yang saya kerjakan menggunakan teks terang dengan latar belakang gelap, jadi ini benar-benar mengacaukan tampilan formulir - Saya memiliki kotak kuning dan teks putih yang hampir tidak terlihat. Setelah bidang difokuskan, bidang kembali normal.
Apakah mungkin untuk menghentikan Chrome mengubah warna bidang ini?
autocomplete
input
google-chrome
DisgruntledGoat
sumber
sumber
Jawaban:
Ini berfungsi dengan baik, Anda dapat mengubah gaya kotak input serta gaya teks di dalam kotak input:
Di sini Anda dapat menggunakan warna apapun misalnya
white
,#DDD
,rgba(102, 163, 177, 0.45)
.Tetapi
transparent
tidak akan bekerja di sini.Selain itu, Anda dapat menggunakan ini untuk mengubah warna teks:
Saran: Jangan gunakan radius blur yang berlebihan dalam ratusan atau ribuan. Ini tidak memiliki manfaat dan mungkin menempatkan beban prosesor pada perangkat seluler yang lebih lemah. (Juga berlaku untuk bayangan luar aktual). Untuk kotak input normal dengan tinggi 20px, 'radius blur' 30px akan menutupinya dengan sempurna.
sumber
:-internal-autofill-previewed
dan:-internal-autofill-selected
pseudoclasses alih-alih-webkit-autofill
... Secara misterius,-webkit-autofill
masih berfungsi. Saya pribadi tidak membutuhkannya!important
.Solusi sebelumnya untuk menambahkan bayangan kotak bekerja dengan baik untuk orang-orang yang membutuhkan latar belakang warna solid. Solusi lain untuk menambahkan transisi berfungsi, tetapi harus menetapkan durasi / penundaan akan berarti bahwa pada titik tertentu mungkin akan ditampilkan lagi.
Solusi saya adalah menggunakan keyframe sebagai gantinya, dengan cara itu akan selalu menunjukkan warna yang Anda pilih.
Contoh Codepen: https://codepen.io/-Steve-/pen/dwgxPB
sumber
color: inherit
Saya punya solusi yang lebih baik.
Mengatur latar belakang ke warna lain seperti di bawah ini tidak menyelesaikan masalah bagi saya karena saya membutuhkan bidang input transparan
Jadi saya mencoba beberapa hal lain dan saya datang dengan ini:
sumber
-webkit-text-fill-color: yellow !important;
untuk warna teks.display
. Fiddle - Lihat itutransition-duration
tinggi, akan lebih baik untuk mengaturtransition-delay
sebaliknya. Dengan cara itu Anda mengurangi lebih jauh kemungkinan perubahan warna.transition
hack akan bekerja hanya jika input tidak otomatis diisi dengan entri default direkam oleh browser, jika latar belakang kuning akan tetap ada.background-color
tidak berfungsi? Chrome perlu memperbaiki ini !!Ini adalah solusi saya, saya menggunakan transisi dan penundaan transisi karena itu saya dapat memiliki latar belakang transparan pada bidang input saya.
sumber
box-shadow
untuk validasi"color 9999s ease-out, background-color 9999s ease-out";
valrs exprssion tidak. Saya menggunakan kode itu,-webkit-transition: background-color 9999s ease-out;
dan-webkit-text-fill-color: #fff !important;
box-shadow
validasi yang ada ? Dalam kasus saya, karena aturan css ini, bayangan kotak merah khusus saya (yang menunjukkan kesalahan input) tertunda, membuat pengguna percaya bahwa input terbaru tidak valid padahal sebenarnya bagus.Ini telah dirancang karena perilaku pewarnaan ini berasal dari WebKit. Hal ini memungkinkan pengguna untuk memahami data yang telah diisi sebelumnya.Bug 1334
Anda bisa mematikan pelengkapan otomatis dengan melakukan (atau pada kontrol formulir khusus:
Atau Anda dapat mengubah warna IsiOtomatis dengan melakukan:
Catatan, ada bug yang dilacak agar ini berfungsi lagi: http://code.google.com/p/chromium/issues/detail?id=46543
Ini adalah perilaku WebKit.
sumber
!important
dan (b) ditargetkan dengan ID untuk spesifisitas yang lebih tinggi. Sepertinya Chrome akan selalu menimpanya. Menghapus autocomplete sepertinya berhasil, tetapi sebenarnya bukan itu yang ingin saya lakukan.autocomplete="off"
tentu saja akan meningkatkan masalah aksesibilitas. Mengapa jawaban ini ditandai sebagai benar?Solusi yang mungkin saat ini adalah dengan menetapkan bayangan bagian dalam "kuat":
sumber
coba ini untuk menyembunyikan gaya isi-otomatis
sumber
Semua jawaban di atas berhasil tetapi memang memiliki kesalahan. Kode di bawah ini adalah gabungan dari dua jawaban di atas yang bekerja dengan sempurna tanpa berkedip.
sumber
KELANCANGAN
sumber
Setelah 2 jam mencari, tampaknya Google masih menimpa warna kuning, tetapi saya tetap memperbaikinya. Betul. itu akan bekerja untuk melayang, fokus dll juga. yang harus Anda lakukan adalah menambahkan! penting untuk itu.
ini akan sepenuhnya menghapus kuning dari bidang input
sumber
Menambahkan satu jam penundaan akan menghentikan sementara perubahan css pada elemen input.
Ini lebih baik daripada menambahkan animasi transisi atau bayangan batin.
sumber
Selain itu:
Anda mungkin juga ingin menambahkan
Selain itu, ketika Anda mengklik input, warna kuning akan kembali. Untuk fokus, jika Anda menggunakan bootstrap, bagian kedua adalah untuk perbatasan yang menyorot 0 0 8px rgba (82, 168, 236, 0.6);
Sedemikian rupa sehingga hanya akan terlihat seperti input bootstrap.
sumber
Saya punya masalah di mana saya tidak bisa menggunakan bayangan kotak karena saya perlu bidang input menjadi transparan. Ini sedikit hack tapi CSS murni. Atur transisi ke jumlah waktu yang sangat lama.
sumber
transition-duration
tinggi, akan lebih baik untuk mengaturtransition-delay
sebaliknya. Dengan cara itu Anda mengurangi lebih jauh kemungkinan perubahan warna.Coba ini: Sama seperti @ Nathan-white jawaban di atas dengan tweak kecil.
sumber
Jika Anda ingin menjaga fungsi autocomplete tetap utuh, Anda dapat menggunakan sedikit jQuery untuk menghapus gaya Chrome. Saya menulis posting pendek tentang hal itu di sini: http://www.benjaminmiles.com/2010/11/22/fixing-google-chromes-yellow-autocomplete-styles-with-jquery/
sumber
Saya telah mengembangkan solusi lain menggunakan JavaScript tanpa JQuery. Jika Anda merasa ini berguna atau memutuskan untuk mengirim kembali solusi saya, saya hanya meminta Anda memasukkan nama saya. Nikmati. - Daniel Fairweather
Kode ini didasarkan pada kenyataan bahwa Google Chrome menghapus gaya Webkit segera setelah teks tambahan dimasukkan. Cukup mengubah nilai kolom input tidak cukup, Chrome menginginkan acara. Dengan berfokus pada setiap bidang input (teks, kata sandi), kami dapat mengirim acara keyboard (huruf 'a') dan kemudian mengatur nilai teks ke keadaan sebelumnya (teks yang diisi otomatis). Ingatlah bahwa kode ini akan berjalan di setiap browser dan akan memeriksa setiap bidang input dalam halaman web, sesuaikan sesuai dengan kebutuhan Anda.
sumber
Saya memiliki solusi CSS murni yang menggunakan Filter CSS.
Filter abu-abu menggantikan warna kuning dengan abu-abu, kemudian kecerahan menghilangkan abu-abu.
MELIHAT CODEPEN
sumber
Ini akan berfungsi untuk input, textarea dan pilih dalam keadaan normal, mengarahkan, fokus dan aktif.
Berikut adalah versi SCSS dari solusi di atas untuk mereka yang bekerja dengan SASS / SCSS.
sumber
Bagi mereka yang menggunakan Kompas:
sumber
Saya menyerah!
Karena tidak ada cara untuk mengubah warna input dengan autocomplete, saya memutuskan untuk menonaktifkan semuanya dengan jQuery untuk browser webkit. Seperti ini:
sumber
Saya punya solusi jika Anda ingin mencegah pengisian otomatis dari google chrome tetapi sedikit "parang", cukup hapus kelas yang ditambahkan google chrome ke bidang input tersebut dan atur nilainya menjadi "" jika Anda tidak perlu menampilkan menyimpan data setelah dimuat.
sumber
Solusi Daniel Fairweather ( Menghapus warna latar belakang input untuk Chrome autocomplete? ) (Saya akan senang untuk meningkatkan solusi, tetapi masih perlu 15 rep) bekerja sangat baik. Ada perbedaan yang sangat besar dengan solusi yang paling banyak dipilih: Anda dapat menyimpan gambar latar belakang! Tapi sedikit modifikasi (hanya periksa Chrome)
Dan Anda perlu diingat, itu HANYA berfungsi pada bidang yang terlihat !
Jadi Anda jika Anda menggunakan $ .show () untuk formulir Anda, Anda harus menjalankan kode ini Setelah acara () acara
Solusi lengkap saya (saya memiliki tombol tampilkan / sembunyikan untuk formulir masuk):
Maaf lagi, saya lebih suka itu menjadi komentar.
Jika Anda mau, saya bisa meletakkan tautan ke situs tempat saya menggunakannya.
sumber
dan ini berhasil untuk saya (Chrome 76 diuji)
sumber
Saya mencoba hampir semua solusi di atas. Tidak ada yang berhasil untuk saya. Akhirnya berhasil dengan solusi ini. Saya harap seseorang membantu ini.
sumber
Benjamin terima kasih!
Solusi Mootools sedikit lebih rumit, karena saya tidak bisa mendapatkan bidang dengan menggunakan
$('input:-webkit-autofill')
, Jadi apa yang saya gunakan adalah sebagai berikut:sumber
Tidak ada solusi yang bekerja untuk saya, bayangan sisipan tidak akan bekerja untuk saya karena input memiliki latar belakang transparan yang dilapis di atas latar belakang halaman.
Jadi saya bertanya pada diri sendiri, "Bagaimana cara Chrome menentukan apa yang harus diisi otomatis pada halaman tertentu?"
"Apakah itu mencari id input, nama input? Form id? Form action?"
Melalui eksperimen saya dengan nama pengguna dan input kata sandi, hanya ada dua cara yang saya temukan yang akan menyebabkan Chrome tidak dapat menemukan bidang yang harus diisi otomatis:
1) Letakkan input kata sandi di depan input teks. 2) Beri mereka nama dan id yang sama ... atau tidak ada nama dan id sama sekali.
Setelah halaman dimuat, dengan javascript Anda dapat secara dinamis mengubah urutan input pada halaman, atau secara dinamis memberi mereka nama dan id ...
Dan Chrome tidak tahu apa yang menimpanya ... autocomplete rusak!
Retas gila, saya tahu. Tapi itu berhasil untukku.
Chrome 34.0.1847.116, OSX 10.7.5
sumber
Sayangnya, tidak ada satu pun solusi di atas yang berhasil di tahun 2016 (beberapa tahun setelah pertanyaan)
Jadi, inilah solusi agresif yang saya gunakan:
Pada dasarnya, ini menghapus tag sambil menyimpan nilai, dan membuatnya kembali, lalu mengembalikan nilai.
sumber
saya menggunakan ini. bekerja untukku. hapus latar belakang bidang kuning.
sumber
Seperti yang disebutkan sebelumnya, inset -webkit-box-shadow untuk saya bekerja paling baik.
Juga cuplikan kode untuk mengubah warna teks:
sumber
Ini bekerja untuk saya:
sumber