jqueryを使ったタブメニューの作り方【簡易版】
- カテゴリー:
- javascript
中々尋常じゃない暑さと忙しさが続いており、ブログ書けていなかったんですが、小さなネタでもいいから書こうかなと思います。(汗
コンテンツがいくつかのカテゴリー分けがされており、1ページに収めるには縦に長くなりすぎるなぁって時によく使うタブメニューの作り方なんかを紹介したいと思います。
まずは、HTMLのサンプルコードです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<div id="tab_content"> <ul id="tab_head"> <li><a class="active" href="#tab01">タブ01</a></li> <li><a href="#tab02">タブ02</a></li> <li><a href="#tab03">タブ03</a></li> <li><a href="#tab04">タブ04</a></li> </ul> <div id="tab01" class="box"> <!-- コンテンツの中身を記述 --> </div> <div id="tab02" class="box"> <!-- コンテンツの中身を記述 --> </div> <div id="tab03" class="box"> <!-- コンテンツの中身を記述 --> </div> <div id="tab04" class="box"> <!-- コンテンツの中身を記述 --> </div> </div> |
上記のコードでは、#tab_contentで対象となるコンテンツ全体を囲み、#tab_head内がタブの切り替えを行うメニュー、各.boxがタブメニューで表示、非表示が切り替わるコンテンツとなっております。
次にCSSです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
#tab_content { margin: 0 auto; width: 600px; text-align: left; overflow: hidden; } #tab_head { width: 600px; overflow: hidden; } #tab_head li { margin: 0 5px 0 0; width: 120px; float: left; display: inline; } #tab_head li a { width: 120px; height: 30px; line-height: 30px; text-align: center; text-decoration: none; color: #333333; border: 1px solid #999999; border-bottom: none; display: block; } #tab_head li a:hover { text-decoration: none; background: #dddddd; } #tab_head li a.active { text-decoration: none; background: #dddddd; } #tab_content .box { padding: 10px; border: 1px solid #999999; display: none; } .box#tab01 { display: block; } |
#tab_head li a.activeは、現在表示されているコンテンツと対になっているメニューのオンオフをわかりやすくするための記述です。
はじめに記載したHTMLでは1番目のアンカーに.activeを適用しています。
#tab_content .boxは、display:none;で全て非表示の状態にし、1番目のコンテンツにあたる.box#tab01をdisplay:block;で表示させています。
上記2つの記述方法はjavascript側で行う事も可能なのですが、今回は、簡易版ということで、cssとhtml側で簡易的に対応しました。
最後にjavascriptの記述です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
$(function(){ $("#tab_head").children("li").children("a").click(function(e){ e.preventDefault(); var url = $(this).attr("href"); $("#tab_head").children("li").children("a").removeClass("active"); $(this).addClass("active"); $("#tab_content").children(".box").hide(); $(url).show(); }); }) |
#tab_head li内のアンカーがクリックされるとそのクリックされたアンカーに.activeを適用し、hrefの中身を読み取り、該当のコンテンツを表示させています。
hrefには表示させたいコンテンツのIDを記述しています。
サンプルはコチラ