同じページに複数配置が可能です。
ヘッダーで、jquery.jsと後述のtab.jsを読み込んでいます。
2012/07/19 改訂
同じページに複数配置できるようhtml・CSS・jsを修正
2013/08/24 改訂
【2015.06.07】firefoxでページ内リンクが動作しなかったので改訂。
【2016.09.07】WAI-ARIAに対応
【2016.10.13】Divの中にDivが入るように修正。
JSを読み込みます
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script> <script type="text/javascript" src="js/tab.js"></script>
[tab.js]JavaScript
$(window).load(function() { $(".tabset").each(function(){ var set = $(this); var btn = set.find("ul.tabset_tab li a"); var setpael = set.find("ul.tabset_tab li a.select"); var panel = set.find(".tabset_panel>div"); var setpanelID = $(setpael).attr("href"); //パネル初期設定 $(panel).hide().attr("aria-hidden","true"); $(btn).attr({"aria-selected":"false","tabindex":"-1"}); $(setpael).attr({"aria-selected":"true","tabindex":"0"}); $(".tabset_panel div"+setpanelID).show().attr("aria-hidden","false"); //アクション $(btn).click(function(){ $(btn).removeClass("select").attr("aria-selected","false"); $(this).addClass("select").attr("aria-selected","true"); $(panel).hide().attr("aria-hidden","true"); $($(this).attr("href")).show().attr("aria-hidden","false"); //return false; }); // 矢印キーで移動 $('[role="tab"]').on('keydown', function(e) { var $original = $(this); var $prev = $(this).parents('li').prev().children('[role="tab"]'); var $next = $(this).parents('li').next().children('[role="tab"]'); var $target; switch (e.keyCode) { case 37: $target = $prev; break; case 39: $target = $next; break; default: $target = false break; } if ($target.length) { $original.attr({ 'tabindex' : '-1', 'aria-selected' : null }); $target.attr({ 'tabindex' : '0', 'aria-selected' : true }).focus(); } }); }); });
HTMl
<div class="tabset"> <ul class="tabset_tab" role="tablist"> <li><a href="#tab1" class="select" role="tab" aria-controls="tab1"><span>メニュー[1]</span></a></li> <li><a href="#tab2" role="tab" aria-controls="tab2"><span>メニュー[2]</span></a></li> <li><a href="#tab3" role="tab" aria-controls="tab3"><span>メニュー[3]</span></a></li> <li><a href="#tab4" role="tab" aria-controls="tab4"><span>メニュー[4]</span></a></li> <li><a href="#tab5" role="tab" aria-controls="tab5"><span>メニュー[5]</span></a></li> </ul> <div class="tabset_panel"> <div tablidex="0" id="tab1" role="tabpanel"> <div> <p><strong>メニュー[1]</strong><br /> 説明文が入ります。説明文が入ります。説明文が入ります。説明文が入ります。説明文が入ります。説明文が入ります。<br /> 説明文が入ります。説明文が入ります。説明文が入ります。説明文が入ります。</p> </div> </div> <div tablidex="0" id="tab2" role="tabpanel"> <div> <strong>メニュー[2]</strong><br /> <img src="img/img.gif" width="282" height="129" alt="イメージ図" /><br /> 図も入れてみたり~</div> </div> <div tablidex="0" id="tab3" role="tabpanel"> <div> <strong>メニュー[3]</strong><br /> 説明文が入ります。説明文が入ります。説明文が入ります。<a href="">説明文が入ります。</a>説明文が入ります。説明文が入ります。<br /> 説明文が入ります。説明文が入ります。説明文が入ります。説明文が入ります。 <p><a href="">リンク</a></p> </div> </div> <div tablidex="0" id="tab4" role="tabpanel"> <div> <strong>メニュー[4]</strong><br /> 説明文が入ります。説明文が入ります。説明文が入ります。説明文が入ります。説明文が入ります。説明文が入ります。<br /> 説明文が入ります。説明文が入ります。説明文が入ります。説明文が入ります。 </div> </div> <div tablidex="0" id="tab5" role="tabpanel"> <div> <strong>メニュー[5]</strong><br /> 説明文が入ります。説明文が入ります。説明文が入ります。説明文が入ります。説明文が入ります。説明文が入ります。<br /> 説明文が入ります。説明文が入ります。説明文が入ります。説明文が入ります。 </div> </div> </div> <!--tabset_end--></div>
CSS
/* tab */ .tabset{ width:500px; } .tabset_tab li{ width:100px; height:30px; float:left; text-align:center; line-height:30px; } .tabset_tab li a{ display:block; outline:none; /* linkline */ background-color:#F3F2ED; border-bottom:solid 1px #91A5B2; } .tabset_tab li a span{ display:block; background:transparent url('img/tab_topbk.gif') no-repeat left top scroll; } .tabset_tab li a:hover{text-decoration:none;background-color:#F8F9E4;} .tabset_tab li a:focus{outline:1px #000 dotted;} .tabset_tab li a.select{ text-decoration:none; color:#000; font-weight:bold; background:#FFF url('img/tab_bk_on.gif') no-repeat left top scroll; border-bottom:none; } /* panel */ .tabset_panel{ width:500px; clear:both; padding:0 0 5px 0; background:#FFF url('img/tabpanel_bk.gif') no-repeat left bottom scroll; } .tabset_panel>div{ padding:10px 10px 5px 10px; border-left:solid 1px #91A5B2; border-right:solid 1px #91A5B2; }