Chrome mendukung atribut placeholder pada input[type=text]
elemen (orang lain mungkin juga melakukannya).
Tetapi yang berikut CSS
ini tidak melakukan apa pun terhadap nilai placeholder:
input[placeholder], [placeholder], *[placeholder] {
color: red !important;
}
<input type="text" placeholder="Value">
Value
akan tetap grey
sebagai gantinya red
.
Apakah ada cara untuk mengubah warna teks placeholder?
css
html
placeholder
html-input
David Murdoch
sumber
sumber
<input>
tag, sepertiinput
pemilih, tetapi menampilkan teks placeholder sekarang. Itu juga tidak cocok dengan atribut placeholder itu sendiri.input
pemilih karena itu memilih semuainput
elemen.:placeholder-shown
hanya memilihinput
elemen yang saat ini menunjukkan placeholder, yang memungkinkan Anda untuk mendesain elemen-elemen itu saja, dan secara efektif gaya teks placeholder. Apa yang kamu coba katakan?textarea
elemen yang menampilkan teks placeholder.)Jawaban:
Penerapan
Ada tiga implementasi yang berbeda: elemen pseudo, kelas pseudo, dan tidak ada.
::-webkit-input-placeholder
. [ Ref ]:-moz-placeholder
( satu titik dua). [ Ref ]::-moz-placeholder
tetapi pemilih lama akan tetap bekerja untuk sementara waktu. [ Ref ]:-ms-input-placeholder
. [ Ref ]::placeholder
[ Ref ]Internet Explorer 9 dan lebih rendah tidak mendukung
placeholder
atribut sama sekali, sedangkan Opera 12 dan lebih rendah tidak mendukung pemilih CSS untuk placeholder.Diskusi tentang implementasi terbaik masih berlangsung. Perhatikan elemen pseudo bertindak seperti elemen nyata di Shadow DOM . A
padding
pada sebuahinput
tidak akan mendapatkan warna latar belakang yang sama dengan pseudo-element.Penyeleksi CSS
Agen pengguna harus mengabaikan aturan dengan pemilih yang tidak dikenal. Lihat Selectors Level 3 :
Jadi kita membutuhkan aturan terpisah untuk setiap browser. Kalau tidak, seluruh grup akan diabaikan oleh semua browser.
Catatan penggunaan
opacity: 1
sini.em
dan mengujinya dengan pengaturan ukuran font minimum yang besar. Jangan lupa terjemahan: beberapa bahasa membutuhkan lebih banyak ruang untuk kata yang sama.placeholder
tetapi tanpa dukungan CSS untuk itu (seperti Opera) harus diuji juga.input
tipe (email
,search
). Ini mungkin memengaruhi rendering dengan cara yang tidak terduga. Gunakan properti-webkit-appearance
dan-moz-appearance
untuk mengubahnya. Contoh:sumber
*:-ms-input-placeholder
dan:-ms-input-placeholder
dengan sendirinya tidak bekerja, tetapiINPUT:-ms-input-placeholder
tidak. Aneh.Ini akan memberi gaya pada semua
input
dantextarea
penampung.Catatan Penting: Jangan kelompokkan aturan ini. Alih-alih, buat aturan terpisah untuk setiap pemilih (satu pemilih yang tidak valid dalam grup membuat seluruh grup menjadi tidak valid).
sumber
Anda mungkin juga ingin menata textareas:
sumber
Untuk pengguna Bootstrap dan Less , ada mixin .placeholder:
sumber
@input-color-placeholder
- biasanya ditemukan di variabel.lessSelain jawaban toscho saya perhatikan beberapa ketidakkonsistenan webkit antara Chrome 9-10 dan Safari 5 dengan properti CSS yang didukung yang patut dicatat.
Secara khusus Chrome 9 dan 10 tidak mendukung
background-color
,border
,text-decoration
dantext-transform
ketika styling placeholder.Perbandingan lintas-browser lengkap ada di sini .
sumber
Untuk pengguna Sass :
sumber
@content;
Ini akan bekerja dengan baik. DEMO DI SINI:
sumber
Di Firefox dan Internet Explorer, warna teks input normal menimpa properti warna placeholder. Jadi, kita perlu melakukannya
sumber
Solusi lintas-browser:
Kredit: David Walsh
sumber
Gunakan yang baru
::placeholder
jika Anda menggunakan autoprefixer .Perhatikan bahwa .placeholder mixin dari Bootstrap sudah tidak digunakan lagi.
Contoh:
Saat menggunakan autoprefixer di atas akan dikonversi ke kode yang benar untuk semua browser.
sumber
Sekarang kita memiliki cara standar untuk menerapkan CSS ke placeholder input:
::placeholder
pseudo-element dari Draft Modul Level 4 CSS ini .sumber
Saya baru menyadari sesuatu untuk Mozilla Firefox 19+ bahwa browser memberikan nilai opacity untuk placeholder, jadi warnanya tidak akan seperti yang Anda inginkan.
Saya menimpa
opacity
untuk 1, jadi itu akan baik untuk pergi.sumber
Saya tidak ingat di mana saya menemukan potongan kode ini di Internet (itu tidak ditulis oleh saya, tidak ingat di mana saya menemukannya, atau siapa yang menulisnya).
Cukup muat kode JavaScript ini lalu edit placeholder Anda dengan CSS dengan memanggil aturan ini:
sumber
Saya pikir kode ini akan berfungsi karena placeholder diperlukan hanya untuk teks jenis input. Jadi CSS satu baris ini akan cukup untuk kebutuhan Anda:
sumber
::placeholder
bersama dengan autoprefixer.Untuk pengguna Bootstrap , jika Anda menggunakan
class="form-control"
, mungkin ada masalah kekhususan CSS. Anda harus mendapatkan prioritas yang lebih tinggi:Atau jika Anda menggunakan Less :
sumber
Jika Anda menggunakan Bootstrap dan tidak bisa menjalankannya, mungkin Anda melewatkan fakta bahwa Bootstrap sendiri menambahkan penyeleksi ini. Ini adalah Bootstrap v3.3 yang sedang kita bicarakan.
Jika Anda mencoba mengubah placeholder di dalam kelas CSS .form-control maka Anda harus menimpanya seperti ini:
sumber
Kode singkat dan bersih ini:
sumber
Bagaimana dengan ini
Tidak ada CSS atau placeholder, tetapi Anda mendapatkan fungsionalitas yang sama.
sumber
<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>
dengan input ini, teks placeholder akan dikirim ke server. Saya melihat begitu banyak situs melakukan kesalahan ini.Saya telah mencoba setiap kombinasi di sini untuk mengubah warna, pada platform seluler saya, dan akhirnya:
yang berhasil.
sumber
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.
Kedengarannya bagi saya seperti Anda punya beberapa aturan CSS lain yang mengaturcolor
properti.Untuk pengguna SASS / SCSS menggunakan Bourbon , ia memiliki fungsi bawaan.
Output CSS, Anda juga dapat mengambil bagian ini dan menempelkannya ke kode Anda.
sumber
coba kode ini untuk berbagai elemen masukan gaya yang berbeda
Contoh 1:
contoh 2:
sumber
Ini satu contoh lagi:
sumber
Menambahkan kemungkinan aktual yang sangat bagus dan sederhana: filter css !
Ini akan mengatur segalanya, termasuk placeholder.
Berikut ini akan mengatur kedua input pada palet yang sama, menggunakan filter rona untuk perubahan warna. Itu membuat sangat baik sekarang di browser (kecuali yaitu ...)
Untuk memungkinkan pengguna mengubahnya secara dinamis, menggunakan warna jenis input untuk perubahan, atau untuk menemukan nuansa, lihat cuplikan ini:
Dari: https://codepen.io/Nico_KraZhtest/pen/bWExEB
Css memfilter dokumen: https://developer.mozilla.org/en-US/docs/Web/CSS/filter
sumber
OK, placeholder berperilaku berbeda di browser yang berbeda, jadi Anda perlu menggunakan awalan peramban di CSS Anda untuk menjadikannya identik, misalnya Firefox memberikan transparansi kepada placeholder secara default, jadi perlu menambahkan opacity 1 ke css Anda, ditambah warnanya, bukan perhatian besar sebagian besar kali, tetapi bagus untuk membuat mereka konsisten:
sumber
Anda dapat mengubah warna placeholder input HTML5 dengan CSS. Jika kebetulan, konflik CSS Anda, catatan kode ini berfungsi, Anda dapat menggunakan (! Penting) seperti di bawah ini.
Semoga ini bisa membantu.
sumber
Anda dapat menggunakan ini untuk gaya input dan fokus:
sumber
Cara termudah adalah:
sumber
Kompas memiliki mixin untuk ini di luar kotak.
Ambil contoh Anda:
Dan di SCSS menggunakan kompas:
Lihat dokumen untuk mixin placeholder input.
sumber
Berikut ini solusinya dengan pemilih CSS
:: - webkit-input-placeholder.
:: -moz-placeholder (satu titik dua).
Mozilla Firefox 19+ menggunakan elemen pseudo:
:: - moz-placeholder, tetapi pemilih lama akan tetap berfungsi untuk sementara waktu.
:: -ms-input-placeholder.
sumber
Bagian dari HTML:
Saya akan menunjukkan cara mengubah warna ekspresi 'Masukkan kalimat' dengan CSS:
sumber