Birincisi dışında 'tr' tümünü seç


257

trİlk hariç tüm öğeleri nasıl seçebilirimtrCSS içeren bir tabloda ?

Bu yöntemi kullanmayı denedim , ancak işe yaramadı.


1
Bunun hangi tarayıcılarla uyumlu olması gerekir?
Pekka


@ Pekka'nın sorusu önemlidir, çünkü IE'nin çeşitli sürümleriyle çalışacak standart CSS kullanarak bunu yapmanın herhangi bir yolunu düşünemiyorum. IE'yi desteklemeniz gerekiyorsa, uygulanabilir tek çözüm ilk sınıf için bir sınıf <tr>ve geri kalanı için farklı bir sınıftır.
Spudley

IE hakkında endişeli değilim ama FF ve GC çalışacak

Yanıtlar:


466

İlkine trveya sonrasına sınıf ekleyerektr s . Yalnızca CSS ile istediğiniz satırları seçmenin çapraz tarama yolu yoktur.

Ancak, Internet Explorer 6, 7 veya 8'i önemsemiyorsanız:

tr:not(:first-child) {
    color: red;
}

18
Ayrıca tr:not(:first-of-type), ilk genelleştirilmiş çocuktan ziyade belirli bir seçicinin ilk örneğini arıyorsanız, potansiyel bir çözüm olarak da belirtmek isterim.
Joshua Burns

2
2019'da IE ile bittiğimizi düşünüyorum
IE6'dan

227

IE7 ve üstü tarafından desteklenen kardeş birleştiricilerin kullanımından hiç kimsenin bahsetmediğine şaşırdım:

tr + tr /* CSS2, adjacent sibling */
tr ~ tr /* CSS3, general sibling */

Her ikisi de (HTML tabloları bağlamında) tam olarak aynı şekilde çalışır:

tr:not(:first-child)

1
Bekle ... bu kabul edilen cevap nasıl olmalı? OP'nin sorduğu bu ifadeden "ilk önce hepsi" alamazsınız. tr + tr size tek bir öğe verecektir. Sanırım tr ~ tr hepinizi alacak (Ben ebeveyn gibi bir şey sanırım: ilk-çocuk ~ tr), ama sözdizimi olarak okunabilir bir şekilde değil:
hairbo

5
@hairbo: tr + tr, doğrudan başka bir tr'yi takip eden tr'yi alır. Üç satırlı bir tablonuz varsa, üçüncü satır doğrudan ikinci satırı takip eder, böylece eşleşir. Bunun yerine yalnızca tr: first-child + tr kullanırsanız tek bir öğe alırsınız. + Ve ~ arasındaki tek fark ~ belirtilen ikisi arasında herhangi bir sayıda başka öğeye izin verilmesidir.
BoltClock

Sadece eklemek istedim, elem + elemhedeflemek istediğiniz öğelerin tek çocuk olmadığı zamanlar için harika bir genel çözümdür. Örneğin, a'nın <h2>ardından birkaç <p>etiket gelirse <p>, ilki bu durumda ilk alt öğe değildir.
DisgruntledGoat

27

ideal çözüm ancak IE'de desteklenmiyor

tr:not(:first-child) {css}

İkinci çözüm tüm tr'leri biçimlendirmek ve daha sonra ilk çocuk için css ile geçersiz kılmak olacaktır:

tr {css}
tr:first-child {override css above}

10

bahsettiğiniz 'ilk satır' gibi görünüyor, tablo başlığınızdır - bu nedenle, gerçekten daha iyi bir işaretleme (anlamsal olarak doğru, ekran okuyucular gibi şeyler için yararlı olacak şekilde kullanmayı theadve tbodyişaretlemenizi ( buraya tıklayın ) düşünmelisiniz. ) ve css seçimi için daha kolay, tarayıcılar arası kolay olanaklar ( table thead ... { ... })


3

Sorunun zaten iyi bir cevabı olmasına rağmen, :first-childetiketin çocukları temsil eden öğe türüne gittiğini vurgulamak istiyorum .

Örneğin, kodda:

<div id"someDiv">
     <input id="someInput1" /> 
     <input id="someInput2" />
     <input id="someInput2" />
</div

Eğer marjlı sadece ikinci iki unsuru etkilemek istiyorsanız, ancak ilkini etkilemiyorsanız, şunları yaparsınız:

#someDiv > input {
     margin-top: 20px;
}
#someDiv > input:first-child{
     margin-top: 0px;
}

yani inputs çocuklar first-childolduğu için seçicinin giriş kısmına yerleştirirsiniz.


1

Üzgünüm, bu eski olduğunu biliyorum ama neden tüm tr öğeleri ilk ve psuedo sınıfının kullanımı dışında tüm istediğiniz gibi stil olmasın: tüm tr öğeleri için belirttiğiniz şeyi iptal ettiğiniz ilk çocuk.

Bu örnekle daha iyi tanımlanmıştır:

http://jsfiddle.net/DWTr7/1/

tr {
    border-top: 1px solid;
}
tr:first-child {
    border-top: none;   
}

/ Patrik


1

Yana tr:not(:first-child)IE 6, 7, 8. tarafından desteklenmeyen jQuery'ye yardımını kullanabilirsiniz. Burada bulabilirsiniz



0

Birisi faydalanabilir, aşağıda kullandığım şey

ol li:not(:first-child) {
    background: black;
    color: white;
}


-3

Bir sınıf oluşturabilir ve geleceğinizin CSS tarafından seçilmesini istediğiniz (veya istemediğiniz) tüm öğeleri tanımladığınızda sınıfı kullanabilirsiniz.

Bu yazı ile yapılır

<tr class="unselected">

ve sonra css'inizde satırlara sahip (ve örnek olarak text-align komutunu kullanarak):

unselected {
  text-align:center;
}



selected {
  text-align:right;
}

2
memnun
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.