2012-12-03 10 views
49

Czy mogę stylizować co trzeci element listy?Stylizacja co trzeciego elementu listy za pomocą CSS?

Obecnie w moim szerokim dziale 960px mam listę pól, które są unoszone w lewo i są wyświetlane w widoku siatki 3x3. Mają także margines prawa: 30px, ale ponieważ trzecia pozycja na liście 6 i 9 ma taki margines, powoduje, że przeskakują z rzędu, powodując błędne wyświetlanie siatki.

Jak łatwo jest uniemożliwić 3. 6 i 9 miejsce prawo na marginesie bez konieczności przyznawania im innej klasy, czy jest to jedyny sposób, aby to zrobić?

+0

Dla lepszego zrozumienia tego problemu można sprawdzić ten tutplus wideo https://www.youtube.com/watch?v=nuCoBOdY2Qk Dzięki –

+0

szukasz 'li: nth-child (3n + 3)' faktycznie , ponieważ chcesz wykluczyć indeks 0. Jestem zaskoczony, że poprawna odpowiedź nie została dostarczona po pięciu i pół roku. Oto [** JSFiddle **] (https://jsfiddle.net/WebWanderer/sjo3uu1z/6/) – WebWanderer

Odpowiedz

130

Tak, można użyć tak zwanych selektorów :nth-child.

W tym przypadku należałoby użyć:

li:nth-child(3n) { 
// Styling for every third element here. 
} 

: nth-child (3n):

3(0) = 0 
3(1) = 3 
3(2) = 6 
3(3) = 9 
3(4) = 12 

:nth-child() jest kompatybilny w Chrome, Firefox i IE9 +.

Aby obejść, użyj :nth-child() między innymi selektorami pseudo-klas/atrybutów w IE6 do IE8, see this link.

+0

czy ta opcja działa w IE – Gezzamondo

+1

@Gezzamondo Według [MDN] (https: //developer.mozilla. org/en-US/docs/CSS /: nth-child) jest obsługiwany przez IE9 +. – Sirko

+0

Powinien działać w IE9 +. Jeśli pracujesz dla IE8 i wcześniej, sprawdź ten link - http://selectivizr.com/ – lifetimes

7

Można użyć selektora :nth-child dla tego

li:nth-child(3n) { 
/* your rules here */ 
} 
Powiązane problemy