:before
dan :after
tidak diharuskan bekerja untuk elemen yang diganti, dan spesifikasi CSS tidak menentukan bagaimana mereka akan bekerja untuk mereka, dan konsep elemen yang diganti agak kabur.
Spesifikasi CSS 2.1 dengan jelas menyarankan bahwa mereka dapat bekerja untuk elemen yang diganti, hanya mengatakan bahwa itu tidak "sepenuhnya mendefinisikan" bagaimana. Hal ini berkaitan dengan masalah bahwa elemen yang diganti diharapkan memiliki rendering visualnya sendiri, yang tidak dikontrol oleh CSS, sedangkan pseudo-elemen harus menambahkan sesuatu ke konten elemen. Spesifikasi menambahkan bahwa ini akan didefinisikan "secara lebih rinci" dalam spesifikasi yang akan datang, tetapi sejauh ini belum terjadi.
Vendor browser baru saja memutuskan untuk menghindari masalah dengan tidak mengimplementasikan elemen semu ini untuk beberapa elemen sama sekali.
Tidak jelas sama sekali apa artinya "elemen yang diganti", dan artinya tampaknya telah berubah. Hal ini sering diartikan sebagai makna yang sama dengan elemen kosong (elemen dengan EMPTY
konten yang dideklarasikan, yaitu elemen yang tidak dapat memiliki konten apa pun), tetapi CSS 2.1 sendiri menunjukkan contoh style sheet dengan selektor br:before
(meskipun browser telah mengabaikan ini, menerapkannya br
sendiri cara). Dapat dikatakan bahwa semakin banyak elemen telah pindah ke lingkup rendering CSS, setidaknya sebagian. Misalnya, input
elemen (termasuk font, warna, dll.) Sebagian besar dapat dikontrol dengan CSS di browser modern.
Browser saat ini (Firefox, IE, Chrome) tampaknya tidak mendukung :after
dan :before
pseudo-elemen untuk elemen kosong selain hr
. Untuk hr
, IE dan Chrome menempatkan konten yang dihasilkan di dalam kotak berbatasan, yang merupakan implementasi dari hr
; konten membuat kotak lebih tinggi. Firefox menempatkan konten dari kedua elemen pseudo (!) Setelah aturan horizontal yang diimplementasikan hr
. Variasi ini menggambarkan jenis masalah "interaksi" yang dirujuk dalam CSS 2.1.
Sering diklaim bahwa elemen semu ini tidak dapat digunakan untuk elemen kosong karena definisi HTML-nya tidak mengizinkan konten apa pun. Ini adalah kesalahan kategori. Aturan sintaks dari bahasa markup tidak membatasi apa yang dapat Anda lakukan di CSS
Untuk menyimpulkan, :after
dan :before
saat ini tidak dapat digunakan untuk elemen kosong (kecuali sedikit untuk hr
), tetapi ini terutama karena implementasi dan dapat berubah di masa mendatang.
<before></before>
" di sumbernya.