ホームページ作成/装飾・レイアウトの動的変更 (HTML,CSS,JavaScript)

角丸タブを使ったタブボックスを作る(4ページ目)

閲覧者が「タブ」をクリックすると、ページを移動することなく一瞬でボックス内の表示内容が切り替わる「タブボックス」を、上部の角を丸くした(タブらしく見える)タブを使って作ってみましょう。《まとめ編》

西村 文宏

執筆者:西村 文宏

ホームページ作成ガイド

今回のソースのまとめ

今回ご紹介した修正部分(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>

表示例

上記のソースをすべて合わせて表示させると、以下のように見えます。

タブ1

タブに対応するボックス(中身)

タブ2

タブに対応するボックス(中身)


……説明用サンプル……
このように中身をたくさん書くと、スクロールバーが表示されるようになります。
これは、スタイルシートでheightプロパティを使ってボックスの高さを指定した上で、overflowプロパティに値「auto」を指定しているからです。この場合、表示する中身が指定した高さよりも高くなる場合に、自動的にスクロールバーが表示されるようになります。

タブ3

タブに対応するボックス(中身)

タブをクリックすると、それに応じてボックス内の表示内容が変化するはずです。(タブ3だけ幅が狭いのは、タブ3に対してだけスタイルシートで横幅を狭く(90pxに)指定しているからです。)
※タブによる表示切替は、JavaScriptが有効な環境のみ機能します。

おわりに

今回は、上部の角を丸くした(タブらしく見える)タブを使って、ページを移動することなく一瞬でボックス内の表示内容が切り替わる「タブボックス」を作る方法をご紹介いたしました。 ぜひご活用下さい。

【編集部おすすめの購入サイト】
楽天市場でホームページ作成関連の書籍を見るAmazon でホームページ作成の参考書を見る
  • 前のページへ
  • 1
  • 2
  • 3
  • 4
※記事内容は執筆時点のものです。最新の内容をご確認ください。
※OSやアプリ、ソフトのバージョンによっては画面表示、操作方法が異なる可能性があります。

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます