Saya tahu bahwa saya dapat menargetkan elemen yang memiliki atribut tertentu di CSS, misalnya:
input[type=text]
{
font-family: Consolas;
}
Tetapi apakah mungkin untuk menargetkan elemen yang memiliki atribut dengan nilai apa pun (kecuali tidak ada, yaitu ketika atribut belum ditambahkan ke elemen)?
Kurang lebih seperti:
a[rel=*]
{
color: red;
}
Yang harus menargetkan <a>
tag pertama dan ketiga di HTML ini:
<a href="#" rel="eg">red text</a>
<a href="#">standard text</a>
<a href="#" rel="more">red text again</a>
Saya pikir itu mungkin karena secara default, cursor: pointer
tampaknya diterapkan ke <a>
tag apa pun yang memiliki nilai untuk href
atributnya.
sumber
empty
a[rel]:not( [rel=""] )
not
trik tersebut akhirnya menjadi tidak dinamis. Saya mencoba melakukan ini untuk menyorotinput
bidang ketika mereka memiliki nilai versus ketika mereka tidak memiliki nilai, dan tampaknya setelah halaman dimuat, gaya tidak dievaluasi ulang jika nilai diketik (atau ketika itu ada untuk memulai dengan dan itu dihapus).Ya di selektor CSS 3 ada beberapa selektor atribut .
Misalnya
sumber
Harus menambahkan bahwa jika browser menyetel atribut secara default, Anda mungkin perlu mengatasinya. Tampaknya ini tidak menjadi masalah di broser "modern", namun, ini adalah masalah yang pernah saya lihat, jadi pastikan untuk memeriksa kinerja lintas browser.
Misalnya, saya menemukan bahwa di IE sebelum 9, colSpan diatur untuk semua TD dalam Tabel, jadi setiap sel memiliki nilai colspan tersembunyi 1.
Jadi jika Anda menargetkan "sembarang TD dengan atribut colspan" yang Anda terapkan di webdoc Anda, bahkan td yang tidak memiliki kumpulan atribut colspan, seperti TD apa pun yang menjadi satu sel, akan menerima gaya css. IE kurang dari 9 pada dasarnya akan menata semuanya!
Satu-satunya alasan untuk mengkhawatirkan ini adalah semua pengguna XP yang tersisa di luar sana yang tidak dapat memutakhirkan di atas IE8.
Jadi sebagai Contoh, saya memiliki sekelompok tabel di mana konten dapat bergeser dari ujung ke ujung, meninggalkan 1 hingga 7 sel kosong baik di akhir atau di awal.
Saya ingin menerapkan warna ke setiap sel kosong di akhir atau awal menggunakan atribut colspan. Penggunaan berikut ini tidak akan berfungsi di IE kurang dari 9
#my td[colspan] {background-color:blue;}
... semua TD akan ditata (lucu karena gaya atribut bersyarat seharusnya lebih unggul di IE, tapi saya ngelantur ...).
Menggunakan karya-karya berikut di semua browser ketika saya menetapkan nilai colspan ke 'single' untuk sel tunggal / TD yang ingin saya sertakan dalam skema gaya, namun ini adalah 'retas' dan tidak akan memvalidasi dengan benar ...
#my td[colspan="single"] {background-color:blue;} /* 'single' could be anything */ #my td[colspan="2"] {background-color:blue;} #my td[colspan="3"] {background-color:blue;} #my td[colspan="4"] {background-color:blue;} #my td[colspan="5"] {background-color:blue;} #my td[colspan="6"] {background-color:blue;} #my td[colspan="7"] {background-color:blue;}
Alternatifnya, Anda semestinya dapat mengatasi masalah dengan lebih tepat menggunakan gaya bersyarat menggunakan "if lt IE 9" untuk mengganti. Ini akan menjadi cara yang benar untuk melakukan ini, hanya perlu diingat Anda harus menyembunyikan "css yang dibangun dengan benar" dari IElt9 dalam prosesnya, dan saya pikir satu-satunya cara yang tepat untuk melakukannya adalah dengan lembar gaya selektif.
Sebagian besar dari kita sudah melakukannya, tetapi bagaimanapun juga, Anda masih sebaiknya mempertimbangkan dan menguji apakah browser menerapkan atribut otomatis ketika tidak ada, dan bagaimana browser dapat menangani sintaksis Anda yang sebaliknya untuk mengatur gaya pada nilai atribut.
(btw, colspan kebetulan belum ada dalam spesifikasi css [sejak css3], jadi contoh ini tidak menampilkan kesalahan validasi.)
sumber