Cara Membuat Submenu Dropdown Dengan CSS dan Jquery
Kali ini saya akan membuat menu dropdown bertingkat dengan CSS yang kemudian diberikan sentuhan efek jQuery agar lebih indah. Menu ini sebenarnya merupakan salah satu pesanan teman yang pernah diterapkan disalah satu template website umum berbasis php. Sempat dibuat pusing juga dengan menu jenis ini, berkali-kali melakukan percobaan yang cukup melelahkan dengan beberapa kali error, sekalinya tidak error malah menunya entah berada dimana. Maklum Blogger pemula dan sangat awam dengan yang namanya koding CSS dan jQuery.hehehe
Mari kita buat menu dropdown bertingkat (Multilevel Dropdown MenuLangkah 1
Struktur dasar dari menu dropdown yang akan kita buat menggunakan stuktur XHTML misalnya seperti dibawah ini:
Langkah 2
Setelah itu kita menggunakan kode CSS untuk memperbaiki penampilannya:
Kode "position:relative;" digunakan untuk menyusun ulang posisi menu yang akan ditempatkan secara relative dan absolute. Hal ini nantinya digunakan untuk menata menu-menu berikutnya yang akan disusun sesuai dengan isi blok serta atribut-atribut lainnya.
Mari kita buat menu dropdown bertingkat (Multilevel Dropdown MenuLangkah 1
Struktur dasar dari menu dropdown yang akan kita buat menggunakan stuktur XHTML misalnya seperti dibawah ini:
<ul id="nav">
<li><a href="#">Beranda</a></li>
<li><a href="#">Kontak</a></li>
<li><a href="#">Arsip</a>
<ul>
<li><a href="#">jQuery</a>
<ul>
<li><a href="#">Download</a></li>
<li><a href="#">Tutorial</a></li>
</ul>
</li>
<li><a href="#">Bloghack</a></li>
<li><a href="#">JavaScript</a></li>
</ul>
</li>
</ul>
Lihat hasil langkah 1 disini.Langkah 2
Setelah itu kita menggunakan kode CSS untuk memperbaiki penampilannya:
#nav, #nav ul{
margin:0;
padding:0;
list-style-type:none;
list-style-position:outside;
position:relative;
line-height:1.5em;
}
Kode CSS diatas akan menghilangkan identasi pada browser dan membuang semua tanda bullet pada #nav dan semua elemen yang ada didalamnya. Kode "position:relative;" digunakan untuk menyusun ulang posisi menu yang akan ditempatkan secara relative dan absolute. Hal ini nantinya digunakan untuk menata menu-menu berikutnya yang akan disusun sesuai dengan isi blok serta atribut-atribut lainnya.
Kode "line-height:1.5em;" digunakan untuk mendefinisikan tinggi setiap item menu. Kita dapat mengesetnya sesuai dengan tinggi yang kita inginkan, tetapi link teks akan berada pada posisi center secara vertikal hal ini makanya kita tidak memerlukan pengesetan margin dan padding pada kode CSS ini.
Langkah 3
Percantik menu dengan setting CSS lebih lanjut:
Lihat hasil langkah 2 dan 3 disini.
Langkah 4
Menyempurnakan tampilan dengan kode CSS berikutnya:
Sampai disini sebenarnya menu sudah bagus, silahkan lihat hasil langkah 4 disini. Tetapi menu belum memiliki efek yang lembut saat menu-menu ditampilkan.
Langkah 5
Sekarang mari kita kombinasikan menu-menu dropdown yang sudah kita buat dengan sentuhan efek jQuery, tambahkan kode dibawah ini:
Alhamdulillah langkah demi langkah telah selesai, silahkan lihat hasil akhirnya disini. Dan kembangkanlah menu ini semenarik dan seindah mungkin menurut keinginan anda.Dan jangan lupa klik iklan di bawah yaa "pesan sponsor" sebagai tanda terimakasih ...
Langkah 3
Percantik menu dengan setting CSS lebih lanjut:
/* keadaan menu normal, aktif dan pernah diakses */
#nav a:link, #nav a:active, #nav a:visited {
display:block; /* link menu di blok */
padding:0px 5px; /* jarak atas bawah 0 dan kiri kanan 5 pixel */
border:1px solid #333; /* ketebalan garis pinggir dan warna garis */
color:#fff; /* warna teks */
text-decoration:none; /* menghilangkan garis bawah pada link menu */
background-color:#333; /* warna latar belakang menu */
}
/* keadaan menu saat dipilih */
#nav a:hover {
background-color:#fff; /* warna latar belakang menu */
color:#333; /* warna huruf */
}
Kode CSS diatas ini pelengkap dari kode CSS sebelumnya, hal ini untuk membedakan efek pada menu yang sedang dipilih (hover) dengan menu yang tidak dipilih. Pada saat keadaan menu normal, aktif, dan pernah diakses maka menu memiliki tampilan yang sama.Lihat hasil langkah 2 dan 3 disini.
Langkah 4
Menyempurnakan tampilan dengan kode CSS berikutnya:
#nav li {
float:left; /* menu ditempatkan pada sebelah kiri */
position:relative; /* posisi relatif */
}
Kode CSS diatas akan membuat menu tersusun secara horisontal#nav ul {
position:absolute; /* posisi absolute */
width:12em; /* lebar menu */
top:1.5em; /* jarak menu bagian atas */
display:none; /* menu disembunyikan */
}
Kode CSS diatas digunakan untuk menyembunyikan menu berikutnya (menu utama tetap tampil). Lebar masing-masing menu ditetapkan 12em (width:12em;) hal ini agar menu memiliki ukuran tetap, jika kurang anda bisa set lebih lebar lagi. Jarak 1.5em (top:1.5em;) harus sama dengan jarak yang telah ditetapkan sebelumnya di kode CSS "line-height:1.5em;" pada #nav (lihat langkah 2)#nav li ul a {
width:12em;
float:left;
}
Kode CSS diatas digunakan untuk mengeset lebar link menu selebar 12em.#nav ul ul{
top:auto;
}
#nav li ul ul {
left:12em;
margin:0px 0 0 10px;
}
#nav li:hover ul ul, #nav li:hover ul ul ul, #nav li:hover ul ul ul ul{
display:none;
}
#nav li:hover ul, #nav li li:hover ul, #nav li li li:hover ul, #nav li li li li:hover ul{
display:block;
}
#nav ul ul dan #nav li ul ul digunakan untuk memperbaiki penempatan menu. Hal ini sangat penting untuk memperbaiki posisi menu saat dipilih (hover) dan susunan tingkatnya.Sampai disini sebenarnya menu sudah bagus, silahkan lihat hasil langkah 4 disini. Tetapi menu belum memiliki efek yang lembut saat menu-menu ditampilkan.
Langkah 5
Sekarang mari kita kombinasikan menu-menu dropdown yang sudah kita buat dengan sentuhan efek jQuery, tambahkan kode dibawah ini:
$(document).ready(function(){
$(" #nav ul ").css({display: "none"});
$(" #nav li").hover(function(){
$(this).find('ul:first').css({visibility: "visible",display: "none"}).show(400);
},function(){
$(this).find('ul:first').css({visibility: "hidden"});
});
});
Fungsi dari masing-masing script jQuery:$(" #nav ul ").css({display: "none"}); // Perbaikan di Opera
Kode diatas merupakan perbaikan untuk Opera yang tidak mampu menyembunyikan menu dengan cepat. Pada saat kita menggeser mouse (hover) pada sub menu, maka menu akan memiliki efek berkedip (flicker). $(" #nav ul ") script jQuery digunakan untuk memilih semua daftar yang tidak berurutan (unordered lists - ul) didalam #nav dan kemudian mengesetnya menjadi tidak ditampilkan (display:none).$(" #nav li").hover(function(){ //memberikan efek saat menu dipilih (hover)
},function(){ //memberikan efek saat pointer mouse meninggalkan menu
});
Kode diatas untuk memberikan efek pada menu sesuai dengan posisi pointer mouse (hovering). Sederhananya memberikan efek pada saat menu dipilih dan tidak dipilih.$(this).find('ul:first').css({visibility: "visible",display: "none"}).show(400);
Kode ini berfungsi untuk menampilkan sub menu pertama yang tersembunyi dari menu yang sedang dipilih. Sedangkan script .show digunakan untuk menampilkan menu dengan durasi waktu yang ditentukan didalam kurung (400). Hal ini akan memberikan efek menampilkan menu yang sangat lembut.$(this).find('ul:first').css({visibility: "hidden"});
Kode ini berfungsi mengembalikan posisi menu kembali tersembunyi melalui blok mode pada akhir animasinya. Menggunakan kode visibility untuk mencegah berkedip (flicker) pada animasi menu.Alhamdulillah langkah demi langkah telah selesai, silahkan lihat hasil akhirnya disini. Dan kembangkanlah menu ini semenarik dan seindah mungkin menurut keinginan anda.Dan jangan lupa klik iklan di bawah yaa "pesan sponsor" sebagai tanda terimakasih ...
lieur boss banyak amat ya.....
BalasHapusSangat membantu. Terima kasih banyak..(^_^)
BalasHapusSangat rinci, tapi bagaimana jika style tombol-tombol menunya di kasih baground bertema floral.. bisa kahh??
mantaaap gan, ijin nyoba dlu ah....
BalasHapusMakasih gan ilmunya, mau ane terapkan ni diwebsite ane,. bermanfaat sekali ni ilmunye buat ane,, sukses terus gan bikin postingnya untuk kepentingan orang yg memerlukan,.. :)
BalasHapustank gan ... infonya
BalasHapushttp://supplierdagingsapi.co.id
http://jakartafinestmeat.wordpress.com
http://mitrabogatama.com
http://meatspecialist.co.id
manatap gndddd
BalasHapusgan gimana cara penggunaan jquerynya, ku bingung gan, jquerynya file terpisah atau dalam satu file, tolong dijelaskan lebih rinci lagi gan,,, terimakasi
BalasHapuskalau aku lebih suka hasil jadi yg nomor 4 & 5 sebelum diberi efek Jquery, karena cepet banget diakses! :)
BalasHapuscopy paste everywhere. . .
BalasHapus