Bagaimana saya bisa memilih semua tr
elemen kecuali yang pertama tr
dalam tabel dengan CSS?
Saya mencoba menggunakan metode ini , tetapi ternyata tidak berhasil.
<tr>
dan berbeda untuk kelas lainnya.
Bagaimana saya bisa memilih semua tr
elemen kecuali yang pertama tr
dalam tabel dengan CSS?
Saya mencoba menggunakan metode ini , tetapi ternyata tidak berhasil.
<tr>
dan berbeda untuk kelas lainnya.
Jawaban:
Dengan menambahkan kelas ke s pertama tr
atau berikutnya tr
. Tidak ada cara crossbrowser memilih baris yang Anda inginkan dengan CSS saja.
Namun, jika Anda tidak peduli dengan Internet Explorer 6, 7 atau 8:
tr:not(:first-child) {
color: red;
}
tr:not(:first-of-type)
sebagai solusi potensial juga, jika Anda mencari contoh pertama dari pemilih tertentu daripada anak umum pertama.
Saya terkejut tidak ada yang menyebutkan penggunaan combinator saudara, yang didukung oleh IE7 dan yang lebih baru:
tr + tr /* CSS2, adjacent sibling */
tr ~ tr /* CSS3, general sibling */
Keduanya berfungsi dengan cara yang persis sama (dalam konteks tabel HTML):
tr:not(:first-child)
elem + elem
adalah solusi umum yang bagus untuk ketika elemen yang ingin Anda targetkan bukan hanya anak-anak. Misalnya, jika a <h2>
diikuti oleh beberapa <p>
tag, yang pertama <p>
bukan anak pertama dalam kasus itu.
solusi ideal tetapi tidak didukung di IE
tr:not(:first-child) {css}
Solusi kedua adalah menata semua tr's dan kemudian menimpanya dengan css untuk anak pertama:
tr {css}
tr:first-child {override css above}
kedengarannya seperti 'baris pertama' yang sedang Anda bicarakan adalah header-tabel Anda - jadi Anda benar-benar harus memikirkan untuk menggunakan thead
dan tbody
dalam markup Anda ( klik di sini ) yang akan menghasilkan markup 'lebih baik' (semantik benar, berguna untuk hal-hal seperti pembaca layar ) dan kemungkinan yang lebih mudah, lintas-browser-ramah untuk pemilihan css ( table thead ... { ... }
)
Meskipun pertanyaannya sudah memiliki jawaban yang layak, saya hanya ingin menekankan bahwa :first-child
labelnya bertipe item yang mewakili anak-anak.
Misalnya, dalam kode:
<div id"someDiv">
<input id="someInput1" />
<input id="someInput2" />
<input id="someInput2" />
</div
Jika Anda ingin memengaruhi hanya dua elemen kedua dengan margin, tetapi bukan yang pertama, Anda harus:
#someDiv > input {
margin-top: 20px;
}
#someDiv > input:first-child{
margin-top: 0px;
}
yaitu, karena input
s adalah anak-anak, Anda akan menempatkan first-child
pada bagian input pemilih.
Maaf saya tahu ini sudah tua tetapi mengapa tidak gaya semua elemen tr seperti yang Anda inginkan semua kecuali yang pertama dan penggunaan kelas psuedo: anak pertama di mana Anda mencabut apa yang Anda tentukan untuk semua elemen tr.
Lebih baik dijelaskan dengan contoh ini:
tr {
border-top: 1px solid;
}
tr:first-child {
border-top: none;
}
/ Patrik
Pilihan lain:
tr:nth-child(n + 2) {
/* properties */
}
Mungkin seseorang bisa mendapat manfaat, berikut ini yang saya gunakan
ol li:not(:first-child) {
background: black;
color: white;
}
Anda juga bisa menggunakan pemilih kelas pseudo di CSS Anda seperti ini:
.desc:not(:first-child) {
display: none;
}
Itu tidak akan menerapkan kelas ke elemen pertama dengan kelas .desc.
Berikut ini JSFiddle dengan sebuah contoh: http://jsfiddle.net/YYTFT/ , dan ini adalah sumber yang bagus untuk menjelaskan pemilih kelas pseudo: http://css-tricks.com/pseudo-class-selectors/
first-child
mengabaikan kelas.
Anda bisa membuat kelas dan menggunakan kelas ketika Anda menentukan semua masa depan Anda bahwa Anda ingin (atau tidak ingin) dipilih oleh CSS.
Ini akan dilakukan dengan menulis
<tr class="unselected">
dan kemudian di css Anda memiliki garis (dan menggunakan perintah text-align sebagai contoh):
unselected {
text-align:center;
}
selected {
text-align:right;
}