Spesifikasi HTML memungkinkan untuk titik (.) Dalam sebuah id:
<img id="some.id" />
Namun, menggunakan aturan pemilih ID CSS tidak akan cocok dengan benar:
#some.id { color: #f00; }
Spesifikasi CSS untuk ID Selectors tidak menyebutkan kasus ini. Jadi saya menganggap itu menggunakan kombinasi nama tag dan pemilih kelas ? Misalnya, aturan CSS a.className
akan berlaku untuk semua tag jangkar ( <a>
) dengan nama kelas className
, seperti <a class="className"></a>
.
Apakah mungkin memiliki aturan file CSS eksternal yang mereferensikan elemen HTML dengan id-nya yang memiliki titik di dalamnya?
Saya tidak berharap karena CSS menentukan bahwa " pengenal " CSS tidak menyertakan titik sebagai karakter yang valid. Jadi, apakah ini ketidakcocokan mendasar antara spesifikasi HTML dan CSS? Apakah satu-satunya alternatif saya untuk menggunakan jenis pilihan CSS yang berbeda? Adakah yang lebih pintar dari saya untuk mengkonfirmasi atau menyangkal ini?
(Saya akan menghapus titik dari atribut id HTML untuk menyederhanakan banyak hal, tetapi ini adalah id yang dihasilkan sistem, jadi saya tidak memiliki kemampuan untuk mengubahnya dalam kasus ini.)
sumber
#some.id
menggunakan kombinasi ID dan pemilih kelas.Jawaban:
Klasik. Tepat setelah menggali semua spesifikasi yang menulis pertanyaan, saya membacanya lagi dan menemukan ada karakter pelarian. Saya tidak pernah membutuhkannya sebelumnya, tetapi spesifikasi CSS memungkinkan garis miring terbalik (\) keluar seperti kebanyakan bahasa. Apa yang Anda tahu?
Jadi dalam contoh saya, aturan berikut akan cocok:
#some\.id { color: #f00; }
sumber
#some\\.id
untuk keluar dari karakter khusus. Garis miring terbalik pertama digunakan oleh Stylus, meninggalkan garis miring terbalik yang tersisa di CSS yang dikompilasi, yang mencapai hasil yang diinginkan seperti yang dijelaskan dalam jawaban ini.Anda juga bisa menggunakan img [id = some.id]]
Info lebih lanjut di sini: http://www.w3.org/TR/selectors/#attribute-selectors
sumber
.
, seolah-\.
olah.