Accordion Navigation jQuery & CSS
- November 26, 2009
- 57 comments
Accordion menu cũng là một dạng menu phổ biến được sử dụng nhiều trong các website hiện đại. Nó tạo cảm giác “cool cool” khi người dùng click vào đường link. Hơn nữa nó cũng tiết kiệm được rất nhiều diện tích trên trang web. Nhưng Accordion không chỉ được sử dụng cho Menu, nó cũng có thể được sử dụng cho nội dung, hình ảnh.
Trong bài này tôi sẽ hướng dẫn bạn chi tiết cách tạo menu Accordion từ đầu. Nhưng tôi sẽ đơn giản phần CSS và HTML, chúng ta chỉ tập trung chủ yếu vào phần jQuery. Còn màu sắc, hoa lá cành v.v. thì bạn tự thêm vào sau cũng được. Thêm nữa tôi cũng muốn nói đây là markup bằng HTML, còn nếu bạn muốn sử dụng cho các Project web động bằng PHP chẳng hạn thì nó hoàn toàn tương thích. Miễn sao CMS đó có code HTML khi xuất ra giống với code mà chúng ta đã viết ở trong video dưới.
Thời lượng: 22:38
Download định dạng .avi chất lượng cao: MediaFire
File Size: 48 MB
Giải thích thêm về jQuery
Trong bài này chúng ta sử dụng một số function() của jQuery như: addClass(), removeClass(), hide(), slideUp() và slideDown(). Đây là những function() có sẵn của jQuery mà bạn chỉ cần sử dụng jQuery Selector và gán nó vào.
Để có thể sử dụng được jQuery trong trang web, bạn cần phải download jQuery từ trang chủ của jQuery hoặc sử dụng file có sẵn trên server của Google như sau:
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>
Về cơ bản hiệu ứng Accordion hoạt động theo nguyên lý khi người dùng mới mở trang web, thì link đầu tiên được hiển thị còn các thành phần khác bị ẩn đi. Khi người dùng click chuột vào bất cứ link nào, nội dung của nó sẽ được hiển thị và các phần khác bị ẩn. Như vậy bạn có thể tưởng tượng rằng chúng ta phải sử dụng click Event Handler. Cuối cùng để đạt được hiệu ứng mũi tên thay đổi theo trạng thái thì mình dùng một class=’active’. Class này tất nhiên được thêm vào và bỏ đi tự động bằng jQuery.
Anh có thể cho em hỏi ? được không ạ ?
nếu mà khi em muốn lúc load trinh duyệt mà tất cả thẻ dd luôn đóng chứ k phải là có thẻ dd đầu tiên được mở sẵn thì làm như thế nào ạ ? bỏ đoạn dd:not luôn àh a ?
đúng rồi bạn àh bỏ :not đi là đc
Anh Demon Warlock, đầu tiên em xin chân thành cảm ơn anh vì những gì anh đã làm cho chúng em và mọi người. Em không biết nói gì hơn ngoài những lời chúc anh luôn mạnh khỏe.
Em có thắc mắc là theo cái Tut trên của anh thì khi xem Firebug thấy nó đã add được class active, nhưng cái hình mũi tên right.png vẫn không hiện ra được khi mình Click vào nó, em đã test kỹ url hình chính xác ko trùng và thử trên mọi trình duyệt vẫn không có phản ứng gì. Cái này có phải do lỗi ko anh.
Xin anh giúp đỡ, chân thành cảm ơn anh nhiều!
không hiện lên là do trong css chưa đúng thôi.
có khi bạn phải viết với url tương đối
{background: #3883cc url(../images/right.png) no-repeat 5px center;}
thêm vào ../
bạn thử xem nhá
Đúng rồi đó.bạn xem lại đường dẫn file ảnh url đi .Xem bạn để 2 file cùng 1 folder hay khác folder
Phần dưới em đã làm đc rồi.cám ơn
Em có 1 góp ý nhỏ.
Khi dùng php lấy dữ liệu từ database ta không thể viết thêm vào class=”active” như sử dụng html.
ta có thể thêm trong jQuery dòng sau
$(‘dt a:first’).addClass(‘active’);
Thì dt đầu tiên cũng sẽ có background active
Em cũng có 1 điều muốn hỏi
Giờ click dd hiện ra rồi nhưng em muốn nó đóng lại và không mở 1 dd nào nữa thì sao anh.
Em ngồi mò hoài nhưng mà đóng lại thì được nhưng mở dd mới lại không được
Loạn hết cả đầu lên.
Thôi thì lên đây nhờ anh sẽ nhanh hơn.
Mong anh reply sớm giúp em.
Cám ơn rất nhiều bài viết hay của anh,và em cũng đã học hỏi và ứng dụng thành công rất nhiều vào việc học của mình.
Với menu này em cũng đã có làm qua.Nhưng, em không hiểu sao lại bị lỗi ở phần addClass(active) nó không tự add mới cho mình.em ứng dụng với csdl Mysql.
Có 1 cách nào giải quyết được không anh nhỉ.
Anh ơi! Em viết code theo hướng dẫn của anh nhưng nó chỉ hiển thị trên Firefox chứ không hiển thị trên internet explorer 7. XIn anh hướng dẫn. Thanhks a.
anh DW ơi, cho em hỏi tí:
trong đoạn code: $(‘dd:not(:first)’).hide(); của anh là khi người nhập vào trang đầu tiên thì nó hiện jeqeury. Nếu em muốn hiện Documention trước thì làm thế nào.
Em đã thử bằng câu lệnh: $(‘dd:not(:second)’).hide(); nhưng không được. Mong anh và mọi người chỉ giúp em với.
Cám ơn anh và mọi người nhiều!
Cảm ơn anh vì bài viết này rất có ý nghĩa. Em hy vọng rằng izweb ngày càng có nhiều video hay như vậy.
Mong DW khi viết CSS thì dùng add-on Web Developer của Firefox.
Vì với cách viết đó, chúng ta có cái nhìn trực quan hơn, và những lời giải thích của DW trở nên dễ hiểu hơn.
Thanks and best regards!
“bóc tem” topic
trước khi post comment đọc đoạn lưu ý dưới chữ Submit nha bạn. Hãy thể hiện mình là người có văn hóa
TK các thành viên izwebz.com rất nhiều
File reset.css có tác dụng như thế nào vậy bạn !!! khi thiết kế chỉ cần có File reset.css thì có thể chạy dc cả trình duyệt IE7,8 ak.
Để trang web hiển thị đúng trên mọi trình duyệt thì còn nhiều nguyên nhân và cách khắc phục khác nữa. Nhưng Reset CSS làm giảm sự khác nhau về mặc định của các trình duyệt.
Anh DW cho em hỏi, làm sao để khi click vào cái tag dt đang được active ấy thì nó slideup lại ?, theo cách anh làm thì khi reclick vào tag ấy thì nó up xong lại down lại, em muốn nó gom lại hết luôn
Cái này em phải dùng một mệnh đề if…else để kiểm tra xem nó có bị ẩn hay không, nếu ẩn thì hiện lại nó ra. …. có hiểu không nhỉ
Thôi để anh làm lại một tut khác thay cho tut này, chờ thứ 6 sẽ có video cho chú nhé!
ưu tiên chú nhất đấy nhé!
Ôi thần tượng của lòng em, thanks anh nhiều lắm
Mình không rành CSS lắm nên chỉ có thể lấy CSS của các site làm Menu cho mình, mình đang có cái Menu khá nice, giờ muốn thêm tính năng Accordion vào, ngồi cả ngày nhưng vẫn không được mong được hướng dẫn. Link download file Menu http://up.4share.vn/f/2d1c1e1e1c1c191e/daixuan.rar nếu có thể thì thêm code vào giúp mình chân thành cảm ơn !
E-Mail: davidhuynhvan@gmail.com
Thanks bác nhiều lắm,hôm nay tìm mãi mới được Code để làm cái Menu.
Mong bác ngày càng có nhiều video hay để mọi người học tập.
Reset css thì google là ra ngay thôi !
có cái http://meyerweb.com/eric/tools/css/reset/ của Eric Meyer là hay được sài.
Vì Eric Meyer là chuyên gia css mà
@MrV2m: Cám ơn anh, đã nhận được và em đã áp dụng được.
@Lâm Chí Dĩnh: File Reset CSS của bạn đây: http://thethaohangnang.com/videoclip/tutorial/reset.css