今回のソースのまとめ
今回ご紹介した修正部分(HTML・スタイルシート)と、過去にご紹介した部分(HTML・スタイルシート・JavaScript)を合わせたソースを掲載しておきます。コピー&ペーストして使ってみる際などにご活用下さい。
■スタイルシート部分:
<style type="text/css"><!-- /* ▼表示領域全体 */ div.tabbox { margin: 0px; padding: 0px; width: 400px; /* 全体の横幅 */ } /* ▼タブ部分 */ div.tabbox ul.tabs { margin: 0px; /* 外側の余白を消す */ padding: 0px; /* 内側の余白を消す */ } div.tabbox ul.tabs li { margin: 0px; /* 各項目周囲の余白をなくす */ padding: 0px; /* 各項目内側の余白をなくす */ list-style-type: none; /* 先頭記号を消す */ float: left; /* リスト項目を横方向に並べる */ width: 120px; /* タブのデフォルトの横幅 */ /* 左上の角丸 */ background-image: url("tab-base.gif"); background-repeat: no-repeat; background-position: left top; } div.tabbox ul.tabs a { display: block; /* ブロックレベルに */ padding: 5px 0px; /* 内側の余白 */ height: 20px; /* タブの高さ */ text-align: center; /* 中央寄せ */ text-decoration: none; /* 下線を消す */ /* 右上の角丸 */ background-image: url("tab-right.gif"); background-repeat: no-repeat; background-position: right top; } /* ▼タブ個別の色・装飾 */ div.tabbox ul.tabs li.tab1 { background-color: blue; /* タブ1の色(青) */ } div.tabbox ul.tabs li.tab2 { background-color: #aaaa00; /* タブ2の色(黄) */ } div.tabbox ul.tabs li.tab3 { background-color: red; /* タブ3の色(赤) */ width: 90px; /* タブ3の横幅 */ } div.tabbox ul.tabs a:link, div.tabbox ul.tabs a:visited { color: white; /* タブの文字色(白) */ } div.tabbox ul.tabs a:hover { /* タブにマウスを載せた際の装飾 */ color: yellow; /* 黄色 */ text-decoration: underline; /* 下線 */ } /* ▼タブに対応するボックス領域 */ div.tabbox div.tab { height: 150px; /* ボックスの横幅 */ overflow: auto; /* スクロールバー自動表示 */ clear: left; /* 回り込み解除(必須) */ } div.tabbox div#tab1 { /* タブ1の中身(枠線と背景色) */ border: 3px solid blue; background-color: #ccffff; } div.tabbox div#tab2 { /* タブ2の中身(枠線と背景色) */ border: 3px solid #aaaa00; background-color: #ffffcc; } div.tabbox div#tab3 { /* タブ3の中身(枠線と背景色) */ border: 3px solid red; background-color: #ffcccc; } /* ▼ボックス内部の装飾(今回のテクニックとは無関係) */ div.tabbox div.tab p { margin: 0.5em; } div.tabbox div.tab p.tabhead { font-weight: bold; border-bottom: 3px double gray; } --></style>
■JavaScript部分:
<script type="text/javascript"><!-- function ChangeTab(tabname) { // 全部消す document.getElementById('tab1').style.display = 'none'; document.getElementById('tab2').style.display = 'none'; document.getElementById('tab3').style.display = 'none'; // 指定箇所のみ表示 if(tabname) { document.getElementById(tabname).style.display = 'block'; } } // --></script>
■HTML部分:
<div class="tabbox"> <ul class="tabs"> <li class="tab1"><a href="#tab1" onclick="ChangeTab('tab1'); return false;">タブ1</a></li> <li class="tab2"><a href="#tab2" onclick="ChangeTab('tab2'); return false;">タブ2</a></li> <li class="tab3"><a href="#tab3" onclick="ChangeTab('tab3'); return false;">タブ3</a></li> </ul> <div id="tab1" class="tab"> <p class="tabhead">タブ1</p> <p>タブに対応するボックス(中身)</p> </div> <div id="tab2" class="tab"> <p class="tabhead">タブ2</p> <p>タブに対応するボックス(中身)</p> </div> <div id="tab3" class="tab"> <p class="tabhead">タブ3</p> <p>タブに対応するボックス(中身)</p> </div> </div> <script type="text/javascript"><!-- // デフォルトのタブを選択 ChangeTab('tab1'); // --></script>
表示例
上記のソースをすべて合わせて表示させると、以下のように見えます。
タブをクリックすると、それに応じてボックス内の表示内容が変化するはずです。(タブ3だけ幅が狭いのは、タブ3に対してだけスタイルシートで横幅を狭く(90pxに)指定しているからです。)
※タブによる表示切替は、JavaScriptが有効な環境のみ機能します。
おわりに
今回は、上部の角を丸くした(タブらしく見える)タブを使って、ページを移動することなく一瞬でボックス内の表示内容が切り替わる「タブボックス」を作る方法をご紹介いたしました。 ぜひご活用下さい。