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

タブ機能の作り方!ページ移動せずに内容を切り替える(2ページ目)

タブ機能の作り方を解説。ページを移動することなくボックス内の表示内容を切り替える方法です。HTMLとCSSでタブを作り、JavaScriptを使って表示タブを切り替えます。タブ表示部分がクリックされれば一瞬でページ内容が変化するタブ機能は、狭い領域にたくさんの情報を掲載したい場合に便利です。

西村 文宏

執筆者:西村 文宏

ホームページ作成ガイド

1. タブと中身を作るHTMLソースの書き方

まずは、タブを作るHTMLソースを書きましょう。必要最小限のソース記述例を以下に掲載しておきます。記述するHTMLソースは、下記の2つに分けられます。 どちらのソースも、後からJavaScriptでタブの切り替え機能を作る都合で、id名を割り振っています。それ以外には特別な点のないシンプルなHTMLソースです。なお、class属性は一切使っていません。必要であれば、(CSSで独自の装飾を加える目的などで)任意のclass属性を加えても問題ありません。

A. タブそのものを作るHTMLソース:
<p id="tabcontrol">
   <a href="#tabpage1">タブ1</a>
   <a href="#tabpage2">タブ2</a>
   <a href="#tabpage3">タブ3</a>
</p>
<p id="tabcontrol">~</p>の内側に、a要素を使ってリンクを作ります。このリンク1つ1つが、最終的にはタブ1つ1つとして機能します。必要なだけ列挙して下さい。

B. タブに対応する中身(タブページ)を作るHTMLソース:
<div id="tabbody">
   <div id="tabpage1">…… タブ1の中身 ……</div>
   <div id="tabpage2">…… タブ2の中身 ……</div>
   <div id="tabpage3">…… タブ3の中身 ……</div>
</div>
<div id="tabbody">~</div>の内側に、div要素を使ってブロックを作ります。このブロック1つ1つが、最終的にはタブの中身(タブページ)として機能します。タブの中身には何を記述しても構いませんが、div要素は含まないようにして下さい(※)。

※HTML・CSS・JavaScriptの各ソースをシンプルにするため、本記事でご紹介する方法では、「タブの中身を作るdiv要素」の内側には別のdiv要素が含まれないことを前提にしています。
 

タブとタブの中身は、ページ内リンクとして機能する形で記述しておく

「タブを作るa要素」と「タブの中身を作るdiv要素」は、下図の矢印で示したようにhref属性値id属性値を一致させ、ページ内リンクとして機能するように作っておきます。
 
タブを作るa要素のhref属性値と、タブの中身を作るdiv要素のid属性値とを対応させ、ページ内リンクの形にする

タブを作るa要素のhref属性値と、タブの中身を作るdiv要素のid属性値とを対応させ、ページ内リンクの形にする


ここではタブを3つ作っていますが、必要なだけ増やせます。上記の記述例ではid属性値を連番にしていますが、特に連番である必要はありませんので何でも好きなid名を付けられます。なお、タブの個数を何個にしても後述するJavaScriptソースは変わりませんので、最初から個数を決めておく必要はありません。
 

HTMLソースを書いただけの時点では、タブには見えない

上記のHTMLソースをブラウザで表示すると、下図のように見えます。
 
タブを作るためのHTMLソースをブラウザで表示したところ

タブを作るためのHTMLソースをブラウザで表示したところ


まだ何も装飾していませんから、単にリンク3つとブロック3つが並んで表示されるだけです。

これらのリンクは「ページ内リンク」の形になっていますから、もしJavaScriptが動作しない環境で表示された場合でも、情報が閲覧できなくなったり分かりにくくなったりすることはありません。タブとしては機能しなくても、ページ内リンクとしては機能するからです。

それでは次に、タブらしく見えるCSSソースの書き方をご紹介いたします。
  • 前のページへ
  • 1
  • 2
  • 3
  • 5
  • 次のページへ

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

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