Saya ingin menerapkan gaya hanya ke tabel di dalam DIV dengan kelas tertentu:
Catatan: Saya lebih suka menggunakan pemilih-css untuk elemen anak-anak.
Mengapa # 1 berfungsi dan # 2 tidak?
1:
div.test th, div.test td, div.test caption {padding:40px 100px 40px 50px;}
2:
div.test th, td, caption {padding:40px 100px 40px 50px;}
HTML:
<html>
<head>
<style>
div.test > th, td, caption {padding:40px 100px 40px 50px;}
</style>
</head>
<body>
<div>
<table border="2">
<tr><td>some</td></tr>
<tr><td>data</td></tr>
<tr><td>here</td></tr>
</table>
</div>
<div class="test">
<table border="2">
<tr><td>some</td></tr>
<tr><td>data</td></tr>
<tr><td>here</td></tr>
</table>
</div>
</body>
</html>
Apa yang saya lakukan salah?
css
css-selectors
roman m
sumber
sumber
Jawaban:
Kode ini "
div.test th, td, caption {padding:40px 100px 40px 50px;}
" menerapkan aturan untuk semuath
elemen yang terkandung olehdiv
elemen dengan kelas yang dinamaitest
, selain semuatd
elemen dan semuacaption
elemen.Ini tidak sama dengan "semua
td
,th
dancaption
elemen yang terkandung olehdiv
elemen dengan kelastest
". Untuk mencapai itu, Anda perlu mengubah penyeleksi Anda:'
>
' tidak sepenuhnya didukung oleh beberapa browser yang lebih lama (Saya sedang melihat Anda, Internet Explorer).sumber
sumber
.test *
akan menjadi aturan paling spesifik untuk setiap elemen anak. Dengan kata lain, perlu diingat bahwa apa pun yang Anda masukkan ke dalam.test *
tidak dapat ditimpa oleh aturan css yang lebih spesifik karenatest *
ini adalah aturan yang paling spesifik.The
>
pemilih cocok anak langsung saja, tidak keturunan.Kamu ingin
atau lebih mungkin
Edit:
Yang pertama mengatakan
Sedangkan yang kedua mengatakan
Dalam aslinya Anda
div.test > th
mengatakanany <th> which is a **direct** child of <div class="test">
, yang berarti itu akan cocok<div class="test"><th>this</th></div>
tetapi tidak akan cocok<div class="test"><table><th>this</th></table></div>
sumber
Jika Anda ingin menambahkan gaya di semua anak dan tidak ada spesifikasi untuk tag html kemudian gunakan.
Tag induk
div.parent
tag anak dalam div.parent sejenisnya
<a>
,<input>
,<label>
dllkode:
div.parent * {color: #045123!important;}
Anda juga dapat menghapus yang penting, itu tidak diperlukan
sumber
Berikut adalah beberapa kode yang baru saya tulis. Saya pikir itu memberikan penjelasan dasar tentang menggabungkan nama kelas / ID dengan pseudoclasses.
sumber
//
. Lihat stackoverflow.com/questions/4656546/…bekerja untukku.
Selector anak> tidak berfungsi di IE6.
sumber
Sejauh yang saya tahu ini:
atau dalam kasus Anda bahkan ini:
(tapi ini akan berfungsi untuk elemen
yourclass
yang mungkin bukandiv
s) hanya akan memengaruhi tabel di dalamnyayourclass
. Dan, seperti kata Ken,> tidak didukung di mana-mana (dandiv[class=yourclass]
juga, jadi gunakan notasi titik untuk kelas).sumber
Kode ini dapat melakukan triknya juga, menggunakan sintaks SCSS
sumber