2009-09-08 11 views
13

Przykład:Czy istnieje sposób na ukrywanie n-tego elementu na liście za pomocą CSS?

<ul class="mybuttons"> 
    <li class="mybutton"></li> 
    <li class="mybutton"></li> 
    <li class="mybutton"></li> 
</ul> 

Czy to możliwe, aby ukryć 2nd element za pomocą CSS?

+0

Dzięki za dodanie tyle wartość na to pytanie. – GollyJer

+0

Ważne, ponieważ jeśli w tytule stanowiska masz słowo "Projektant", powinieneś zadać to pytanie na stronie http://www.doctype.com. W przeciwnym razie pytanie jest w porządku tutaj. Nie pytałem o to przypadkowo: – EBGreen

+0

Skąd czerpiesz moją pracę? – GollyJer

Odpowiedz

27

nth-child jest rzeczywiście sposób CSS.

W czystym CSS, składnia jest po prostu

li.mybutton:nth-child(2){ 
    display:none; 
} 

nth-of-type(2) prace również w tym przypadku.

Edycja: Chociaż jest to odpowiedź CSS, jak wspomniano, jest to CSS3 i zaimplementowano only in some browsers. IE i FF3 i poniżej nie obsługują tego natywnie. Zaimplementowane w FF3.5, Konquerorze i niepoprawnie w Chrome, Safari i Opera. nth-of-type() implementacje są lepsze.

Obsługa starszych przeglądarek wymaga JavaScriptu (uproszczonego z jQuery i innymi). selektor jQuery jest opisany w dokumentach Selectors/nthChild, a powyższe można uzyskać za pomocą $("li.mybutton:nth-child(2)").hide().

+2

Działa doskonale. Dziękuję Bill. Dla porównania jest to implementacja CSS3 i, jak twierdzi Jon Galloway, jest obsługiwana tylko przez "nowoczesne" przeglądarki. http://www.webdevout.net/browser-support-css#css3pseudoclasses – GollyJer

+1

Nie sądzę, że jest to teraz prawdziwe rozwiązanie, chyba że można wymagać od użytkowników uruchamiania najnowszych wersji przeglądarek innych niż IE. –

+0

@Jon, to jest prawdziwe rozwiązanie * jego * pytania. Poprosił o CSS i oznaczył go css, więc dałem mu odpowiedź CSS. Ale dodam zastrzeżenie do odpowiedzi. –

8

n-th child pseudo selectors zrób to, ale nie są jeszcze szeroko obsługiwane i nie będą przez jakiś czas. Będziesz potrzebować JavaScript/jQuery lub napisać specjalną klasę dla przedmiotów, które chcesz ukryć lub po prostu ukryć bezpośrednio.

Oto jak chcesz to zrobić z jQuery:

$("ul.mybuttons li:nth-child(2)").hide(); 
+0

Dzięki za odpowiedź Jon. Aby wyjaśnić ... JQuery ma wewnętrzne procedury, które przetwarzają pseudo selektory CSS3 przekazane jako parametry, dzięki czemu to rozwiązanie jest kompatybilne z przeglądarką wstecz? Mam dostęp tylko do CSS na potrzeby tego pytania, ale warto zweryfikować moje zrozumienie dla przyszłych projektów. Dzięki jeszcze raz. – GollyJer

+1

Tak, jQuery ma bardzo zaawansowany silnik selektora, który obsługuje CSS3 + i jest wstecznie zgodny z IE6. –

0
ul.mybuttons li:first-child { 
    display:none; 
} 
0

będę najpierw skonfigurować drugi li class = "hidden_li" w pliku HTML.

Przykład:

<ul class="mybuttons"> 
<li class="mybutton"></li> 
<li class="mybutton" class="hidden_li"></li> 
<li class="mybutton"></li> 
</ul> 

Wtedy będę projektować je tak:

.hidden_li{ 
    visibility : hidden; 
    height : 0px; 
    width : 0px; 
    margin : 0px; 
    padding : 0px; 
    overflow : hidden; 
} 
Powiązane problemy