Minggu, 22 Januari 2012

Membuat Horizontal Menu dengan CSS plus Drop Down - Revisited

Membuat Horizontal Menu dengan CSS plus Drop Down - Revisited

Yes, artikel pertama ditahun 2011, saya akan mengajarkan cara membuat navigasi menu lengkap dengan drop down murni dengan CSS. Loh bukannya sudah pernah? Ya dan itu tahun 2008! sudah basi sudah kuno (ya nggak kuno-kuno banget sih), dan masih banyak juga menanyakan kesulitan tentang menu tersebut dikarenakan menggunakan image sprites. Dan karena sekarang sudah tahun 2011, maka saya akan mengajarkannya lagi tanpa menggunakan images sama sekali.
Oke sebelum lanjut, saya asumsikan Anda sudah paham HTML dan CSS, dan tentu saja sudah paham menghubungkan antara HTML file dengan CSS, kalau belum saya sarankan lihat artikel belajar CSS saya dari jaman baheula dulu.
Sebelum anda meneruskan membaca artikel ini, saya sarankan anda paham mengenai dasar-dasar HTML dan dasar-dasar CSS terlebih dahulu.

Membuat kode HTML

Oke kita mulai dengan kode HTML nya, oh iya berhubung sekarang jamannya HTML5 maka saya mulai pakai HTML5, tenang aja masih saya campur-campur dengan XHTML, nanti mengenai HTML5 akan saya bahas sendiri dilain waktu. Oke untuk strukturnya masih sama kita menggunakan tag <ul> dan <li>.
<html lang="en">
<head>
  <meta charset="utf-8" />
  <title>Drop Down Menu</title>
<head>
<body>
  <div id="place-nav">
  <ul id="nav">
    <li class="active"><a href="#">Home</a></li>
    <li><a href="#">Artikel</a></li>
    <li><a href="#">About</a></li>
    <li><a href="#">Social</a>
      <ul>
        <li><a href="#">Facebook</a></li>
        <li><a href="#">Google</a>
          <ul>
          <li><a href="#">Google Wave</a></li>
          <li><a href="#">Google Buzz</a></li>
          <li><a href="#">Google Plus</a></li>
          </ul>
        </li>
        <li><a href="#">Twitter</a></li>
      </ul>
    </li>
    <li><a href="#">Portfolio</a></li>
  </ul>
  </div>
</body>
</html>
Sip, kalau Anda perhatikan didalam <li> Social ada menu lagi dan didalamnya lagi tepatnya didalam <li> Google ada menu lagi. Ini kita nanti akan membuat drop down menu dengan 2 level kedalaman. Oke jika Anda cek hasilnya sementara seperti ini.
Nah sekarang sulapnya, kita ubah list yang biasa itu menjadi menu yang menarik dengan CSS. Seperti ini kode CSS nya, langsung saya tulis semua nanti baru saya terangin:
#place-nav {
  width:960px;
  height:35px;
  margin:63px 0 0 0;
}
#nav {
  height:35px;
}
#nav li {
  height:35px;
  float:left;
  display:inline;
  margin:0 5px;
  position:relative;
  font-family: Arial, verdana, serif;
  z-index:1000;
}
#nav li a {
  float:left;
  display:inline;
  height:25px;
  padding:10px 8px 0 8px;
  font-size:12px;
  color:#9e9e9e;
  font-weight:bold;
  text-transform:uppercase;
  text-shadow:0 0 3px #c7c7c7;
}
#nav li:hover a {
  text-decoration:none;
  color:#505050;
}
#place-nav ul ul {
  position:absolute;
  z-index:1200;
  display:none;
  width:186px;
  margin: 0;
  top: 35px;
  left:0;
  background:#1d87ca;
  padding:0 0 2px 0;
}
#place-nav ul li ul li {
  display: inline;
  float: left;
  width:186px;
  height:auto;
  border-bottom:1px solid #085d93;
  float: left;
  padding: 0;
  position:relative;
  margin:0;
}
#place-nav ul ul ul {
  position:absolute;
  z-index:1300;
  display:none;
  width:186px;
  margin: 0;
  top: 0;
  left:183px;
  background:#1c83ce;
  border-left:1px solid #1479c3;
  padding:0;
}
#place-nav ul li ul li ul li {
  display: inline;
  float: left;
  padding: 0;
}
#place-nav #nav li:hover ul li a, #place-nav #nav li:hover ul li a:link, #place-nav #nav li:hover ul li a:visited {
  color:#fff;
  font-size:12px;
  width:170px;
  height:auto;
  text-transform:none;
  border:none;
  background: none;
  padding:9px 8px;
  text-shadow:none;
  margin:0;
  font-weight:lighter;
}
#place-nav #nav li:hover ul li a:hover, #place-nav #nav li ul li a:hover {
  text-decoration:none;
  color:#fff;
  background:#0f74bd;
}
div#place-nav li:hover ul ul,
div#place-nav li li:hover ul ul
{display:none;}

div#place-nav li:hover ul,
div#place-nav li li:hover ul
{display:block;}
Joss, hasil drop downnya bisa dilihat dulu. Nah saya akan terangkan bagian-bagian yang terpenting, pertama adalah #nav li disini kita kasih position:relative;, kenapa? karena drop down kita #place-nav ul ul memilki position:absolute;. Sehingga kita harus mendeklarasikan kontainernya agar posisinya pas dibawah tiap menu <li>. Jika kita tidak memberi position:relative; maka browser akan menganggap kontainer nya adalah <body> sehingga drop downnya akan muncul dipojok kiri atas browser.
Berikutnya adalah #nav li:hover a loh kok bukan #nav a:hover li kenapa <li> nya yang dihover? Yap, karena drop down kita berada didalam <li> dan bukan didalam <a> maka apabila kita ingin jejaknya tetap ada ya kita hover di <li> nya. Saya tambahkan z-index:1000 buat jaga-jaga karena biasanya dibawah menu itu biasanya terdapat slideshow javascript dan kebanyakan kasus terutama IE7 posisi dropdown dibawah slideshow, karena itu saya kasih z-index yang agak tinggi biar posisi diatasnya.
Dan karena IE6 hanya kenal hover untuk tag <a> maka kalau anda masih cinta IE6 dan masih ingin mendukungnya mending ke laut aja maka gunakan csshover.htc Peter Nederlof agar bisa jalan di IE6/
Oke berikutnya #place-nav ul ul nah ini merupakan drop downnya, karena itu kita beri position:absolute; agar muncul tepat dibawah tiap #nav a:hover li. Jangan lupa untuk kita hilangkan dulu, karena drop downnya baru muncul kalau kita hover jadi awalnya disembunyiin dulu dengan display:none;. Kita atur posisinya agar tepat dibawah menu dengan top:35px; dan left:0;. Pastikan untuk jarak atasnya tidak ada ruang kosong 1 pixel pun karena jika ada ketika mouse kita melewati ruang kosong tersebut maka mouse kita sudah diluar <li> sehingga dropdown akan langsung hilang. Jadi pastikan nilai top lebih kecil atau sama dengan nilai height <li> diatasnya.
Berikutnya #place-nav ul ul ul ini merupakan drop down level ke 2 jadi ya sama kayak sebelumnya, tapi karena dorp down level kedua posisinya agak kekanan dari drop down level 1, maka nilai left kita perbesar tapi juga jangan ada jarak 1 pixel pun.
Nah yang terakhir dan terpenting adalah:
div#place-nav li:hover ul ul,
div#place-nav li li:hover ul ul
{display:none;}

div#place-nav li:hover ul,
div#place-nav li li:hover ul
{display:block;}
Ini merupakan kode css untuk memunculkan drop down dan menghilangkannya. Seperti yang Anda lihat div#place-nav li:hover ul, div#place-nav li li:hover ul ini berarti jika kita menghover <li> maka <ul> berikutnya akan muncul display:block dan <ul> dalamnya (level ke 2) tidak muncul display:none;, baru ketika kita hover <li> level ke dua maka drop down level ke dua akan muncul
Sipp, gampang kan? pusing? ya udah dicoba aja, enjoy
Suka dengan artikel ini? Sebarkan keseluruh dunia melalui Jejaring Sosial berikut ini:

0 komentar:

Posting Komentar

lakukan yang terbaik

Artikel saya

You can replace this text by going to "Layout" and then "Page Elements" section. Edit " About "

Tambah Sesuai Hati kamu