308 Contributors ready to collaborate, Join now.


Menu 3 Level dengan CSS & JQuery

 

Hi all, ini adalah snippet pertama saya di 80tasks.com.

Tidak dapat disangkal lagi bahwa menu dengan sub submenu (3 level) merupakan komponen yang cukup sering dipakai dalam beberapa website, terutama jika website tersebut memiliki struktur navigasi halaman yang  ‘beranak bercucu’. Okay langsung saja, disini ada beberapa bumbu yang saya gunakan dalam pembuatan menu 3 level ini, yaitu:

  • CSS 2.0
  • JQuery
  • XHTML

Dengan struktur file sebagai berikut:

  • /menu.html
  • /menu.css
  • /script.js
  • /jquery-1.4.2.min.js

Browser compatibility: IE 6 (masih perlu di-cross check lagi), IE 7, IE 8, Firefox 2+, Chrome 4+, Opera 9+, Safari 4+

Langkah 1: Buat struktur menu berikut pada file menu.html

<ul id="nav">
   <li><a href="#">Home</a></li>
   <li><a href="#">About</a>
   			<ul>
   			   <li><a href="#">Home</a></li>
   			   <li><a href="#">About</a>
   			   		<ul>
   			   		   <li><a href="#">Home</a></li>
   			   		   <li><a href="#">About</a></li>
   			   		   <li><a href="#">Clients</a></li>
   			   		   <li><a href="#">Contact Us</a></li>
   			   		</ul>
   			   </li>
   			   <li><a href="#">Clients</a></li>
   			   <li><a href="#">Contact Us</a></li>
   			</ul>
   </li>
   <li><a href="#">Clients</a>
   		<ul>
   		   <li><a href="#">Home</a></li>
   		   <li><a href="#">About</a></li>
   		   <li><a href="#">Clients</a></li>
   		   <li><a href="#">Contact Us</a></li>
   		</ul>
   </li>
   <li><a href="#">Contact Us</a></li>
</ul>

Langkah 2: Buat style untuk mengatur tampilan pada langkah 1 (menu.css)

body{
font-family: Helvetica, arial, sans-serif;
}

#nav{
background: #e5e5e5;
float:left;
margin: 0; padding: 0;
}

#nav li a, #nav li{
float: left
}

#nav li{
list-style: none;
position: relative
}

#nav li a{
padding: 0.5em 2em;
text-decoration: none;
background: #1764bf;
color: white;
border-right: 1px solid #114b8f;
border-left: 1px solid #1764bf;
border-bottom: 1px solid #4173af;
border-top: 1px solid #274f7f;
}

#nav li a:hover{
background: #4d88cf;
}

/*submenu*/
#nav li ul{
display: none;
position: absolute;
left: 0;
top:100%;
padding:0;margin:0;
}

#nav li:hover > ul{
display: block;/*memunculkan submenu ketika a pada menu level 1 di hovers*/
}

#nav li ul li, #nav li ul li a{
float: none;
}

#nav li ul li{
_display:inline;/* dukungan untuk ie6 */
}

#nav li ul li a{
width: 150px;
display: block;
}

/*sub submenu*/

#nav li ul li ul{
display: none;
}

#nav li ul li:hover ul{
left:100%;
top:0;
}

Untuk font, warna, dan ukuran dapat disesuaikan dengan selera Anda masing-masing.

Pada langkah 2 ini sebetulnya menu 3 level sudah bisa berjalan dengan baik, namun jika Anda ingin mempercantiknya dengan efek slidedown, silakan lanjutkan ke langkah berikutnya.

Langkah 3: Membuat efek slidedown dengan Javascript (script.js)

var subsubmenu = function (){
	this.navLi=$('#nav > li').children('ul').css('display', 'none').end();
	this.init();
};

subsubmenu.prototype={
	init : function(){
		this.setMenu();
	},

	//Memberikan efek slide

	setMenu: function(){

		this.navLi.hover(function(){
		//mouseover
			$(this).find('>ul').stop(true,true).slideDown(250);
		}, function(){
		//mouseout
			$(this).find('>ul').stop(true,true).fadeOut(200);
		});
	}

}

new subsubmenu();

Framework yang saya gunakan ialah JQuery versi 1.4.2, tidak menutup kemungkinan dapat berjalan dengan baik pula pada JQuery versi lebih lama. Karena perintah yang digunakan ialah perintah dasar.

Langkah 4: Nyalakan rokok, aduk kopi, dan download contohnya agar lebih jelas ;)

Jika rekan-rekan sekalian menemukan bug/bugfix silakan tulis dalam komentar, bagaimana pun juga saya hanyalah seorang nubie yang tak luput dari bug (terutama Internet Explorer).

Sekian snippet pertama saya di 80tasks.com, sampai jumpa di snippet berikutnya. Cheers ;)


Posted by Ananda Rizki - http://twitter.com/neosheet


6 Responses to “Menu 3 Level dengan CSS & JQuery”

  1. neosheet says:

    mas admin, itu tolong di ralat untuk browser compatibility-nya. Harusnya safari 4+ instead 9+ :D (wong skrg aja baru versi 5)

  2. Rio says:

    Sip! Fixed!

  3. kudiarto says:

    wohooooo! tuts yang sangat perfekto sekali… langkah demi langkahnya mudah dipahami…. thanks for share!

    *toss

  4. denny wijaya says:

    ada cara buat yg vertical gk ? hehheehe,, ini yg drop kan :) thxx :)

  5. Ananda Rizki says:

    @denny: kl ada waktu nanti saya tambah untuk vertikalnya ;)

  6. Ananda Rizki says:

    @denny: untuk membuat menjadi vertikal caranya cukup sederhana dengan mengubah/menambah sedikit baris style pada selektor terkait dibawah ini

    #nav li ul li, #nav li ul li a{
    float: none;
    }

    #nav li a{
    display:block;
    }

    #nav li ul{
    left:100%;
    top:0;
    }

    hanya perlu dirapikan sedikit ;)

Leave a Reply



80tasks RSS

Optimized by SEO Ultimate