Yah, secara teknis itu tidak mungkin untuk mendapatkan :before
dan :after
elemen semu bekerja pada input
elemen
Dari W3C :
12.1 The: before dan: after pseudo-elements
Penulis menentukan gaya dan lokasi konten yang dihasilkan dengan: sebelum dan: setelah elemen semu. Seperti namanya, elemen-elemen: before dan: after pseudo menentukan lokasi konten sebelum dan sesudah konten hierarki dokumen elemen. Properti 'konten', bersama dengan elemen pseudo ini, menentukan apa yang dimasukkan.
Jadi saya punya proyek di mana saya telah mengirimkan tombol dalam bentuk input
tag dan untuk beberapa alasan pengembang lain membatasi saya untuk menggunakan <button>
tag daripada tombol input yang biasa, jadi saya datang dengan solusi lain, yaitu membungkus tombol di dalam span
set untuk position: relative;
dan kemudian benar-benar memposisikan ikon menggunakan :after
pseudo.
Catatan: Biola demo menggunakan kode konten untuk FontAwesome 3.2.1 sehingga Anda mungkin perlu mengubah nilai content
properti.
HTML
<span><input type="submit" value="Send" class="btn btn-default" /></span>
CSS
input[type="submit"] {
margin: 10px;
padding-right: 30px;
}
span {
position: relative;
}
span:after {
font-family: FontAwesome;
content: "\f004"; /* Value may need to be changed in newer version of font awesome*/
font-size: 13px;
position: absolute;
right: 20px;
top: 1px;
pointer-events: none;
}
Demo
Sekarang di sini semuanya sudah jelas di sini, tentang satu properti yaitu pointer-events: none;
, saya telah menggunakan itu karena pada melayang di atas :after
konten pseudo yang dihasilkan, tombol Anda tidak akan mengklik, jadi gunakan nilai darinone
akan memaksa tindakan klik untuk melewati konten itu .
Dari Jaringan Pengembang Mozilla :
Selain menunjukkan bahwa elemen tersebut bukan target kejadian mouse, nilai tidak ada yang menginstruksikan kejadian mouse untuk pergi "melalui" elemen dan menargetkan apa pun yang "di bawah" elemen itu sebagai gantinya.
Arahkan font / ikon hati Demodan lihat apa yang terjadi jika Anda TIDAK menggunakanpointer-events: none;