2012-01-11 13 views
23

Chciałbym wybrać dwa pierwsze elementy listy na liście nieuporządkowanej. Mogę wybrać pierwszą pozycję w następujący sposób:nth-child() or first-child? jak wybrać pierwsze i drugie dziecko w jednym

ul li:nth-child(1) a { 
    background: none repeat scroll 0 0 beige; 
} 

LUB

ul li:first-child a { 
    background: none repeat scroll 0 0 beige; 
} 

chciałbym wybrać zarówno pierwszy jak i drugi element liniowy - jak to zrobić?

Odpowiedz

37

Bez użycia js lub :nth-child (które zdaniem nie jest obsługiwana w IE)

ul li:first-child, ul li:first-child + li { 
    list-style: none; 
} 

Here jest demo testowane IE7

+4

+1 dla ': first-child' i selektora sąsiedniego rodzeństwa, idealne dla kompatybilności aż do IE7. – BoltClock

5

Działa to w IE9 +, ale nie jest najkrótsza. Selektor @ BoltClock jest najkrótszym rozwiązaniem dla IE9 +. Myślę, że ten margines jest łatwiejszy do zrozumienia, więc zostawię to jako alternatywę.

ul li:first-child a, ul li:nth-child(2) a 
{ 
    background: none repeat scroll 0 0 biege; 
} 
+0

dzięki. więc muszę oddzielić przecinkiem każdy selektor - nie ma sposobu, aby wybrać oba w tym samym selektorze? Myślałem o czymś podobnym do ul-tego-dziecka (1,2) a - oczywiście, że to nie działa, ale myślałem, że może być coś podobnego, co robi? –

+0

@tvanfosson: Za pomocą 'an + b' możesz po prostu przekazać wartość ujemną" a ", a ona sama odbierze pierwsze" b "dzieci. Zobacz moją odpowiedź. – BoltClock

+0

@BoltClock - Każdego dnia uczę się czegoś nowego. +1 do ciebie, ale zostawię tu moje (po pewnym zastanowieniu), ponieważ uważam, że nieznacznie łatwiej jest zrozumieć, co się dzieje. – tvanfosson

3

Najlepszym rozwiązaniem dla kompatybilności z różnymi przeglądarkami byłoby użycie jQuery i przypisanie klasy do elementu listy.

Coś ...

$(function() { 

$('li').each(function() { 
    if($(this).index() == 1 || $(this).index() == 2) { 
    $(this).addClass('first_or_second'); 
    } 
}); 

}); 
+1

przeglądarek bez javascript? –

35

do wybierania pierwszych i drugich dzieci, można użyć jednego :nth-child() pseudo-klasę tak:

ul li:nth-child(-n+2) a { 
    background: none repeat scroll 0 0 beige; 
} 
+1

Nice. Nie wiedziałem o używaniu 'a = -1'. – tvanfosson

0

.trJobStatus ul{ 
 
    width: 500px; 
 
    height:500px; 
 
    float: left; 
 
    } 
 
.trJobStatus ul li{ 
 
    width: 50px; 
 
    height:50px; 
 
    border: solid 1px #ddd; 
 
    list-style:none; 
 
    display: inline-block; 
 
    text-align: center; 
 
    line-height:50px; 
 
    font-size:25px; 
 
    } 
 

 
.trJobStatus ul li:nth-child(1), 
 
.trJobStatus ul li:nth-child(5){ 
 
    color:red; 
 
    }

 
    <div class="trJobStatus"> 
 
    <ul> 
 
<li>1</li> 
 
    <li>2</li> 
 
    <li>3</li> 
 
    <li>4</li> 
 
    <li>5</li> 
 
    </ul> 
 
</div>

.trJobStatus ul li: nth-child (1), .trJobStatus ul li: nth-child (2) { kolor: #fff; background-color: #ddd; }

Powiązane problemy