Tuesday, January 17, 2012

Tambahkan Kelas 'active'/'current' pada Menu Berdasarkan URL pada Address Bar

jQuery Active Menu

Tambahkan kelas active pada menu yang sedang aktif (menu dengan nilai href yang sama dengan URL pada Address bar):

jQuery

$(function() {
    var path = window.location.href; // Mengambil data URL pada Address bar
    $('nav a').each(function() {
        // Jika URL pada menu ini sama persis dengan path...
        if (this.href === path) {
            // Tambahkan kelas "active" pada menu ini
            $(this).addClass('active');
        }
    });
});

HTML

<nav>
    <ul>
        <li><a href='http://www.aa.com'>Beranda</a></li>
        <li><a href='http://www.bb.com'>Arsip</a></li>
        <li><a href='http://www.cc.com'>Tentang</a></li>
        <li><a href='http://sekaratmutlak.blogspot.com/2012/01/active-menu.html'>Komentar</a></li>
        <li><a href='http://www.ee.com'>Kontak</a></li>
    </ul>
</nav>

CSS

nav {
  font:normal 14px Impact,Arial,Sans-Serif;
  text-transform:uppercase;
}

nav ul {
  list-style:none;
  border:1px solid #1D4ABE;
  margin:0px 0px;
  padding:0px 0px;
  background:#222;
  -webkit-box-shadow:0px 1px 2px #000;
  -moz-box-shadow:0px 1px 2px #000;
  box-shadow:0px 1px 2px #000;
  overflow:auto;
}

nav li {
  display:inline;
  float:left;
}

nav li a {
  display:block;
  text-decoration:none;
  padding:10px 15px;
  background:#222;
  color:#ccc;
  text-shadow:0px 1px 1px rgba(0,0,0,0.8);
}

nav li a:hover  {background:#333;text-decoration:none;}
nav li a.active {background:#1D4ABE;color:#fff;}

Lihat Demo

Pembaharuan: Versi JavaScript murni

JavaScript

function currentNav(navId) {
    var current = window.location.href.split('#')[0],
        nav = document.getElementById(navId),
        navItem = nav.getElementsByTagName('a');
    for(var i = 0; i < navItem.length; i++) {
        // Jika nilai atribut href pada salah satu array tautan = URL address bar...
        if(navItem[i].href == current || navItem[i].href == decodeURIComponent(current)) {
            // Tambahkan kelas 'active' pada tautan tersebut
            navItem[i].className = "active";
        }
    }
} currentNav('navigation'); // Terapkan fungsi 'currentNav()' pada navigasi dengan id="navigation"

HTML

<nav id="navigation">
   ...
   ...
</nav>

Detail CSS

#navigation a.active {
  color:red;
  font-weight:bold;
}

Sumber: Stackoverflow - A Better Idea to Add Active Class to Menu Item

Labels: , , ,

22 Comments:

At Friday, February 3, 2012 at 5:25:00 PM GMT+7, Blogger Unknown said...

jquery nya taruh mana

 
At Saturday, February 4, 2012 at 4:04:00 PM GMT+7, Blogger Taufik Nurrohman said...

@Spenza-Sumpiuh: di atas </head>

 
At Sunday, May 27, 2012 at 6:05:00 PM GMT+7, Blogger ©Rhaditz'45 said...

bang kalo Tulisa BERANDA ARSIP dll cara menjadi kan di tengah tengah gemana bang

Malah jadi kaya gini http://enter404.blogspot.com/

 
At Sunday, May 27, 2012 at 7:15:00 PM GMT+7, Blogger Taufik Nurrohman said...

@©Rhaditz'45 Susah ditengahkan kalau sudah memakai CSS float. Paling bisa ke tengah kalau nilai lebar menu ditentukan, lalu menerapkan margin auto pada <nav>

 
At Friday, June 1, 2012 at 11:36:00 PM GMT+7, Blogger Unknown said...

Blog DTE :] interaktif banget sama pengunjung bagus. Tipsnya juga bagus, thanks sudah berbagi kawan.

 
At Wednesday, June 6, 2012 at 1:47:00 PM GMT+7, Blogger NEDI ARWANDI said...

Udah lama gak berkunjung, pas mampir ksini dapat pengetahuan baru nih, tetap semangat bro....

 
At Wednesday, June 6, 2012 at 2:23:00 PM GMT+7, Blogger Putra said...

kok gagal yah?? :'(

 
At Friday, July 27, 2012 at 12:58:00 PM GMT+7, Anonymous Anonymous said...

Yang paling unik URL Blog ini... ingat waktu masih kecil

 
At Thursday, August 2, 2012 at 3:19:00 PM GMT+7, Blogger Surga Kenari said...

Hibernasi apaan ya mas Taufik?

 
At Thursday, August 2, 2012 at 4:47:00 PM GMT+7, Blogger Taufik Nurrohman said...

Artinya: kemungkinan dalam waktu dekat blog ini tidak aktif. Jadi kalau komentarnya banyak yang tidak sempat terbalas jangan kaget.

 
At Thursday, August 2, 2012 at 7:16:00 PM GMT+7, Blogger Surga Kenari said...

saya akan sangat sedih sekali :'( hehuhe

 
At Friday, August 31, 2012 at 12:06:00 AM GMT+7, Blogger Unknown said...

keren bgt sob,, nice infonya :D

 
At Sunday, October 28, 2012 at 4:43:00 PM GMT+7, Blogger abang ichal said...

wahh... ikutan sedih juga :(

 
At Sunday, November 4, 2012 at 4:08:00 PM GMT+7, Blogger Rosyd Aqbar said...

wah bagus juga, sama kayak link ya bang bisa di kasih `Active`
ijin Bookmark pak.
tapi saya mau tanya, apa harus pake tag <nav ?
apa bisa pake <div ?

 
At Monday, November 5, 2012 at 9:57:00 PM GMT+7, Blogger Taufik Nurrohman said...

Kalau memakai tag DIV nanti selektornya harus dimodifikasi lagi, di JQuery dan CSS:

<div id="navigasi"> ... </div>
$('#navigasi a').each(function() { ... }
#navigasi {
...
}

 
At Monday, November 12, 2012 at 10:15:00 AM GMT+7, Blogger Unknown said...

keren bank

 
At Monday, February 4, 2013 at 3:11:00 PM GMT+7, Blogger Unknown said...

punyaku udah ada tuh.. tp format RSS

 
At Monday, February 4, 2013 at 6:53:00 PM GMT+7, Blogger Taufik Nurrohman said...

Selamat datang kembali bu Lina Marliana ^_^

 
At Wednesday, February 13, 2013 at 4:06:00 PM GMT+7, Blogger Unknown said...

izinkan aku menyimak dengan teliti :)

 
At Thursday, March 7, 2013 at 9:24:00 AM GMT+7, Blogger Misba_al said...

kurang detail tutorialnya gan, gw bukan hebat masalah blogger

 
At Friday, September 29, 2017 at 4:35:00 PM GMT+7, Anonymous Anonymous said...

Kenapa mau tutup mas :'(

 
At Sunday, June 7, 2020 at 8:46:00 PM GMT+7, Blogger Mastah said...

Ini bisa diterapin di .comment gak min ? Jadi pas kita klik timestamp komentar, 1 kolom komentar tersebut bakal memicu .active, Apakah bisa ?
Atau harus pakai metode lain ?

 

Post a Comment

<< Home