[HTML] Bootstrapを利用してみよう! – 3 –

前回は、実際にBootstrapをインストールし、簡単な動作を確認しました。
今回も引き続き、Bootstrap標準の機能について、ご紹介します。

■作成したHTMLページ
 今回作成したHTMLページは、図1のものです。



<図1 サンプルページ>

 ヘッダー部分に、プルダウン式のメニューを配置しています。
 コンテンツ部分には、タブで切り替わる部品を2つ、配置しています。

 たとえば、ヘッダー部分で図2のように、「2-3」を選択すると
 コンテンツ部分では「2-3」のタブが選択状態になります。



<図2 ヘッダー部分でメニューを選択>



<図3 ヘッダー部分でメニューを選択>

 御覧の通り、タブ表現も、中身のコンテンツもさし変わっていますが、
 これらの機能は、難しいJavaScriptを組むことなく、
 Bootstrapの標準機能で、ほとんどできてしまいます。

■参考サイト
 前回もご紹介しましたが、以下のページに、詳しい内容が記載されています。
 http://php-fan.org/sample_code_demo/bootstrap-js.html#tabs

■HTMLの紹介
 今回作成した、HTMLの中身は、以下の通りです。

<!DOCTYPE html>
<html>
<head>
   <meta charset="utf-8">
   <meta http-equiv="X-UA-Compatible" content="IE=edge">
   <meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
   <title>Test</title>
   <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
   <script src="bootstrap/js/bootstrap.js"></script>
   <link rel="stylesheet" href="bootstrap/css/bootstrap.min.css">
</head>
<body>
  <header style="text-align:center; background-color:#FFFF88; margin-bottom:20px;">
    <div style="display: flex; text-align:center; border: 1px solid #000000;">
      <div style="width:50%; margin-top:auto; margin-bottom:auto;">
        テストページ
      </div>
      <div>
        <ul class="nav pills">
          <li class="dropdown" id="menu1">
            <a class="dropdown-toggle" data-toggle="dropdown" href="#menu1">
            メニュー1
            <b class="caret"></b>
            </a>
            <ul class="dropdown-menu">
              <li><a href="#1-1" onclick="changetab(1,1);">1-1</a></li>
              <li><a href="#1-2" onclick="changetab(1,2);">1-2</a></li>
              <li><a href="#1-3" onclick="changetab(1,3);">1-3</a></li>
            </ul>
          </li>
        </ul>
      </div>
      <div>
        <ul class="nav pills">
          <li class="dropdown" id="menu2">
            <a class="dropdown-toggle" data-toggle="dropdown" href="#menu2">
            メニュー2
            <b class="caret"></b>
            </a>
            <ul class="dropdown-menu">
              <li><a href="#2-1" onclick="changetab(2,1);">2-1</a></li>
              <li><a href="#2-2" onclick="changetab(2,2);">2-2</a></li>
              <li><a href="#2-3" onclick="changetab(2,3);">2-3</a></li>
            </ul>
          </li>
        </ul>
      </div>
    </div>
  </header>

  <content>
    <ul class="nav nav-tabs">
      <li class="active"><a id="tab-1-1" href="#1-1" data-toggle="tab">1-1</a></li>
      <li>        <a id="tab-1-2" href="#1-2" data-toggle="tab">1-2</a></li>
      <li>        <a id="tab-1-3" href="#1-3" data-toggle="tab">1-3</a></li>
    </ul>
    <div class="tab-content" style="width:100%; height:100px; border: 1px solid #000000;">
      <div class="tab-pane active" id="1-1">
        1-1 のコンテンツ
      </div>
      <div class="tab-pane" id="1-2">
        1-2 のコンテンツ
      </div>
      <div class="tab-pane" id="1-3">
        1-3 のコンテンツ
      </div>
    </div>
    <br>
    <ul class="nav nav-tabs">
      <li class="active"><a id="tab-2-1" href="#2-1" data-toggle="tab">2-1</a></li>
      <li>        <a id="tab-2-2" href="#2-2" data-toggle="tab">2-2</a></li>
      <li>        <a id="tab-2-3" href="#2-3" data-toggle="tab">2-3</a></li>
    </ul>
    <div class="tab-content" style="width:100%; height:100px; border: 1px solid #000000;">
      <div class="tab-pane active" id="2-1">
        2-1 のコンテンツ
      </div>
      <div class="tab-pane" id="2-2">
        2-2 のコンテンツ
      </div>
      <div class="tab-pane" id="2-3">
        2-3 のコンテンツ
      </div>
    </div>
  </content>
  <script>
    function changetab(a,b) {
      $('#tab-' + a + '-' + b).click();
    }
  </script>
</body>
</html>

■タブの動きについて
 タブの動きは、大きく3つの要素で成り立っています。
 1)タブのグループ
 2)タブ
 3)そのタブが選択された時、どのコンテンツがActiveになるか

 1)タブのグループ

  <ul class="nav nav-tabs">…</ul>

  が、タブのグループ単位になります。

 2)タブ
  タブのグループの中に記載している1つ1つのリスト、

   <li><a data-toggle="tab"></a></li>

  が、タブになります。

  data-toggle=”tab” を設定することで、この部品が選択された時に、
  タブが有効になります。

 3)そのタブが選択された時、どのコンテンツがActiveになるか
  aタグの中に記載している、
   href=”#1-1″
  が指示しているidになります。
  たとえば、#1-1でしたら、

   <div class="tab-pane active" id="1-1">
     1-1 のコンテンツ
   </div>

  が有効になります。

■ヘッダーのメニューとの連動
 ヘッダーのメニューは、プルダウン式になっています。
 プルダウンの動きだけでしたら、参考サイトに詳細記載されていますが、
 以下のように記載します。

  <ul class="nav pills">
    <li class="dropdown" id="menu1">
      <a class="dropdown-toggle" data-toggle="dropdown" href="#menu1">
      メニュー1
      <b class="caret"></b>
      </a>
      <ul class="dropdown-menu">
        <li><a href="#1-1">1-1</a></li>
        <li><a href="#1-2">1-2</a></li>
        <li><a href="#1-3">1-3</a></li>
      </ul>
    </li>
  </ul>

 しかし、このままだと、タブの部分とは連動してくれません。
 そこで今回は、

  <li><a href="#1-1" onclick="changetab(1,1);">1-1</a></li>

 のように、onclickイベントを追加して、JavaScriptで

  <script>
    function changetab(a,b) {
      $('#tab-' + a + '-' + b).click();
    }
  </script>

 と記述し、タブも一緒に変更されるようにしています。
 ※今回、自分で書いたJavaScriptコードは、これだけです!

■終わりに
 動きのあるコンテンツも、自分でほとんどJavaScriptコードを書くことなく
 簡単に作ることが出来ました。
 Bootstrapには、標準でまだまだ、便利な機能がございますので、
 是非、使ってみて頂きたいです。


弊社では全国各地の請負い(ご自宅)で作業協力頂ける、フリーランスエンジニアの方を常時探しております。
ご興味ある方は、お気軽にお問い合わせ下さい。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*