2008-10-24 39 views
5

Kể từ nhiều năm một tiêu chuẩn GUI là các thanh menu của các ứng dụng có menu bật lên, nếu bạn nhấp hoặc di chuột vào một mục trong thanh menu. Một số trang web cũng triển khai tính năng này, nhưng chúng đang sử dụng Javascript, theo như tôi thấy. Vì những lý do khác nhau Javascript có thể là một vấn đề, do đó, câu hỏi: Có thể thực hiện mà không có Javascript, chỉ sử dụng HTML và CSS không?Làm cách nào để tạo menu trong HTML mà không cần sử dụng Javascript?

Trả lời

12

Tôi đã thực hiện một cái gì đó như thế này trước đây, và đó là một mẹo kéo ra bằng cách đặt các mục menu trong thẻ neo, với menu phụ trong div ẩn ẩn INSIDE những thẻ neo. Thủ thuật CSS là làm cho div bên trong xuất hiện trong sự kiện a: hover.

Nó trông giống như sau:

<style> 
    A DIV { display: none; } 
    A:hover DIV { display: block; } 
</style> 
<a href="blah.htm"> 
    Top Level Menu Text 
    <div><ul> 
     <li><a href="sub1.htm">Sub Item 1</a></li> 
     <li><a href="sub2.htm">Sub Item 2</a></li> 
     <li><a href="sub3.htm">Sub Item 3</a></li> 
    </ul></div> 
</a> 

Mileage của bạn có thể thay đổi ...

EDIT: Internet Explorer 6 và thấp hơn không hỗ trợ: hover pseudo-class trên các yếu tố khác ngoài A. Trong nhiều trình duyệt 'hiện đại' hơn, nó được chấp nhận để có thể sử dụng thủ thuật này với LI, TD, DIV, SPAN và hầu hết mọi thẻ.

+0

Cảm ơn bạn đã giúp đỡ rất nhiều và thậm chí đề cập đến IE6. Khi tôi sử dụng Linux, tôi thậm chí sẽ không kiểm tra IE6. Hoặc tôi có nên phá vỡ các trang web cho IE6 trên mục đích, để giữ cho mọi người có động lực để chuyển sang một trình duyệt hiện đại? ;-) – Mnementh

+0

Theo kinh nghiệm của tôi, tốt nhất nên tránh phá vỡ bất kỳ trình duyệt nào khi bạn đang thiết kế một ứng dụng web để tiêu thụ hàng loạt –

1

Bạn có thể sử dụng bút giả: di chuột để có hiệu ứng di chuột.

a:link { 
color: blue; 
} 

a:hover { 
    color: red; 
} 

Tôi có thể đưa ra một ví dụ rộng hơn nhưng không phải ngay bây giờ (cần đưa con đến nha sĩ).

+1

Đợi đã ... để tôi có được câu chuyện này ngay lập tức. Bạn đã có một cuộc hẹn với nha sĩ sắp tới, những đứa trẻ mặc áo khoác vào cuối tháng 10, và, với chìa khóa trong tay, quyết định "Đợi đã, tôi kiểm tra Stack Overflow trước khi chúng ta đi ... có thể có một câu hỏi CSS tôi có thể trả lời ! " Điều này amuses tôi ... –

+0

@ Yadyn: tôi biết, nó là vô lý. ... Điều gì đã từng xảy ra khi gửi lũ trẻ ra ngoài mà không cần áo khoác để làm cứng chúng ...? – Shog9

6

Hãy xem CSS Menu Maker.

+0

Wow ... Tôi đã tìm kiếm một cái gì đó chính xác như thế này. Great post :). – Abbas

+0

Trang web rất hay ...thêm vào Delicious thx –

+0

Thú vị ... Tôi đã xem cái này: http://www.cssmenumaker.com/builder/menu_info.php?menu=007# trong IE6 và nó không hoạt động, mặc dù thực tế là thanh bên tuyên bố tương thích IE6. Người mua hãy cẩn thận. – mmacaulay

2

Xem xét sử dụng phương thức CSS làm bản sao lưu khi JavaScript không khả dụng. JavaScript có thể * cung cấp trải nghiệm người dùng tốt hơn cho các trình đơn thả xuống vì bạn có thể thêm một số yếu tố trì hoãn để dừng các menu ngay lập tức biến mất nếu chuột rời khỏi vùng di chuột của chúng. Các menu Pure-CSS đôi khi có thể hơi khó sử dụng, đặc biệt nếu các mục tiêu di chuột nhỏ.

*: tất nhiên, không phải tất cả các kịch bản đơn thực sự bận tâm để làm điều này ...

1

Ngoài ra còn có Eric Meyer 's bài viết gốc trên pure CSS menus.

Có ràng buộc để được nhiều hơn nữa mạnh mẽ và hiện đại đưa ra có bây giờ được đề cập bởi những người khác, nhưng tôi nghĩ tôi muốn đề cập đến nó cho hậu thế. :)

Các vấn đề liên quan