Penerapan
Ada tiga implementasi yang berbeda: elemen pseudo, kelas pseudo, dan tidak ada.
- WebKit, Blink (Safari, Google Chrome, Opera 15 +) dan Microsoft Edge menggunakan pseudo-elemen:
::-webkit-input-placeholder
. [ Ref ]
- Mozilla Firefox 4 hingga 18 menggunakan pseudo-class:
:-moz-placeholder
( satu titik dua). [ Ref ]
- Mozilla Firefox 19+ menggunakan pseudo-element:,
::-moz-placeholder
tetapi pemilih lama akan tetap bekerja untuk sementara waktu. [ Ref ]
- Internet Explorer 10 dan 11 menggunakan pseudo-class:
:-ms-input-placeholder
. [ Ref ]
- April 2017: Sebagian besar browser modern mendukung elemen semu sederhana
::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 sebuah input
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 :
Sebuah kelompok penyeleksi mengandung pemilih tidak valid tidak valid.
Jadi kita membutuhkan aturan terpisah untuk setiap browser. Kalau tidak, seluruh grup akan diabaikan oleh semua browser.
::-webkit-input-placeholder { /* WebKit, Blink, Edge */
color: #909;
}
:-moz-placeholder { /* Mozilla Firefox 4 to 18 */
color: #909;
opacity: 1;
}
::-moz-placeholder { /* Mozilla Firefox 19+ */
color: #909;
opacity: 1;
}
:-ms-input-placeholder { /* Internet Explorer 10-11 */
color: #909;
}
::-ms-input-placeholder { /* Microsoft Edge */
color: #909;
}
::placeholder { /* Most modern browsers support this now. */
color: #909;
}
<input placeholder="Stack Snippets are awesome!">
Catatan penggunaan
- Hati-hati untuk menghindari kontras yang buruk. Placeholder Firefox tampaknya menjadi default dengan opacity berkurang, jadi perlu digunakan
opacity: 1
sini.
- Perhatikan bahwa teks placeholder hanya terpotong jika tidak sesuai - ukuran elemen input Anda
em
dan mengujinya dengan pengaturan ukuran font minimum yang besar. Jangan lupa terjemahan: beberapa bahasa membutuhkan lebih banyak ruang untuk kata yang sama.
- Browser dengan dukungan HTML untuk
placeholder
tetapi tanpa dukungan CSS untuk itu (seperti Opera) harus diuji juga.
- Beberapa browser menggunakan CSS default tambahan untuk beberapa
input
tipe ( email
, search
). Ini mungkin memengaruhi rendering dengan cara yang tidak terduga. Gunakan properti -webkit-appearance
dan -moz-appearance
untuk mengubahnya. Contoh:
[type="search"] {
-moz-appearance: textfield;
-webkit-appearance: textfield;
appearance: textfield;
}