2009-09-08 29 views
13

Ví dụ:Có cách nào để ẩn mục thứ n trong danh sách bằng CSS không?

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

Có thể ẩn mục thứ 2 bằng css không?

+0

Cảm ơn để thêm rất nhiều giá trị cho câu hỏi này. – GollyJer

+0

Điều quan trọng bởi vì nếu bạn có từ "Nhà thiết kế" trong chức danh của bạn thì bạn nên đặt câu hỏi tại http://www.doctype.com. Nếu không câu hỏi là tốt ở đây tại SO. Tôi không chỉ ngẫu nhiên hỏi nó – EBGreen

+0

Bạn nhận được chức danh công việc ở đâu? – GollyJer

Trả lời

27

nth-child thực sự là cách CSS.

Trong CSS tinh khiết, cú pháp đơn giản là

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

nth-of-type(2) công trình trong trường hợp này quá.

Chỉnh sửa: Mặc dù đây là câu trả lời CSS, như đã lưu ý, đây là CSS3 và được triển khai only in some browsers. IE và FF3 trở xuống không hỗ trợ điều này. Được triển khai trong FF3.5, Konqueror và không chính xác trong Chrome, Safari và Opera. nth-of-type() triển khai tốt hơn.

Hỗ trợ trong các trình duyệt cũ hơn sẽ yêu cầu javascript (được đơn giản hóa với jQuery, et al). Bộ chọn jQuery được mô tả trong tài liệu Selectors/nthChild và các tài liệu trên có thể được thực hiện với $("li.mybutton:nth-child(2)").hide().

+2

Làm việc hoàn hảo. Cảm ơn Bill. Đối với hồ sơ này là một thực hiện CSS3 và, như Jon Galloway tiểu bang, chỉ được hỗ trợ bởi các trình duyệt 'hiện đại'. http://www.webdevout.net/browser-support-css#css3pseudoclasses – GollyJer

+1

Tôi không nghĩ đây là giải pháp thực sự ngay bây giờ trừ khi bạn có thể yêu cầu người dùng của mình chạy các phiên bản trình duyệt không phải IE mới nhất. –

+0

@Jon, đó là giải pháp thực sự cho câu hỏi * của anh ấy *. Anh ấy yêu cầu CSS và gắn thẻ nó css, vì vậy tôi đã cho anh ta câu trả lời CSS. Nhưng, tôi sẽ thêm một báo trước cho câu trả lời. –

8

n-th child pseudo selectors thực hiện việc này nhưng chúng chưa được hỗ trợ rộng rãi và sẽ không diễn ra trong một thời gian. Bạn sẽ cần Javascript/jQuery hoặc viết ra một lớp đặc biệt cho các mục bạn muốn ẩn hoặc chỉ ẩn các mục một cách trực tiếp.

Đây là cách bạn muốn làm điều đó với jQuery:

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

Cảm ơn bạn đã trả lời Jon. Để làm rõ ... JQuery có các thủ tục nội bộ xử lý các bộ chọn giả CSS3 được truyền làm các tham số sao cho giải pháp này trở lại tương thích với trình duyệt? Tôi chỉ có quyền truy cập vào CSS cho mục đích của câu hỏi này nhưng đáng để xác minh sự hiểu biết của tôi cho các dự án trong tương lai. Cảm ơn một lần nữa. – GollyJer

+1

Vâng, jQuery có một công cụ chọn rất tiên tiến xử lý CSS3 + và tương thích ngược với IE6. –

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

đầu tiên tôi sẽ thiết lập li thứ hai như class = "hidden_li" trong file HTML.

Ví dụ:

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

Sau đó, tôi sẽ phong cách nó như thế này:

.hidden_li{ 
    visibility : hidden; 
    height : 0px; 
    width : 0px; 
    margin : 0px; 
    padding : 0px; 
    overflow : hidden; 
} 
Các vấn đề liên quan