Webデザインで大変お世話になっているbootstrap。すでに手放せない状態になっている方もいるのではないでしょうか!?
この記事では前回のBootstrapで簡単webデザイン BaseCSSの使い方まとめに引き続きcomponentsの使い方を紹介していきます。Webデザインだけでなく、Webアプリでもバンバン使っていけるコンポーネントが揃っているのでこちらも是非使いこなしてみてください。
この記事は古いバージョンのものです。Bootstrap3の使い方はこちら
Bootstrapインタラクティブ!ドロップダウンメニュー
それではさっそくいきましょう。まずはナビゲーションバーなどでよく使うドロップダウンメニューです。
このコンポーネントは2つのパーツに別れています。1つはメニューを展開するためのボタン、2つめはメニュー部分。ボタンの方はbuttonタグやaタグにdropdown-toggleをつければOK。メニューの方はulのclassにdropdown-menuをつけるだけ。
<div class="tabbable">
<ul class="nav nav-tabs">
<li class="active" style="list-style:none">
<a href="#tabf1" data-toggle="tab">Demo</a>
</li>
<li style="list-style:none">
<a href="#tabf2" data-toggle="tab">Code</a>
</li>
</ul>
<div class="tab-content">
<div class="tab-pane active" id="tabf1">
<!-- ボタン部分 -->
<p>ボタン部分</p>
<button class="btn dropdown-toggle" data-toggle="dropdown" href="#">ボタンだけ
<span class="caret"></span>
</button>
<br class="margin-top-middle">
<!-- メニュー部分 -->
<p>メニュー部分</p>
<div class="dropdown clearfix">
<ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu" style="display: block; position: static; margin-bottom: 5px; *width: 180px;">
<li>
<a tabindex="-1" href="#">本</a>
</li>
<li>
<a tabindex="-1" href="#">DVD</a>
</li>
<li>
<a tabindex="-1" href="#">ミュージック</a>
</li>
<li class="divider"></li>
<li>
<a tabindex="-1" href="#">
<i class="icon-music"></i>アイコン付き
</a>
</li>
</ul>
</div>
<br class="margin-top-middle">
<!-- 合わせたもの -->
<p>メニューとボタン</p>
<div class="btn-group">
<button class="btn btn-inverse dropdown-toggle" data-toggle="dropdown">ボタン
<span class="caret"></span>
</button>
<ul class="dropdown-menu">
<li>
<a tabindex="-1" href="#">本</a>
</li>
<li>
<a tabindex="-1" href="#">DVD</a>
</li>
<li>
<a tabindex="-1" href="#">ミュージック</a>
</li>
<li class="divider"></li>
<li>
<a tabindex="-1" href="#">
<i class="icon-music"></i>アイコン付き
</a>
</li>
</ul>
</div>
</div>
<div class="tab-pane" id="tabf2">[html]
<!-- ボタン部分 -->
<p>ボタン部分</p>
<button class="btn dropdown-toggle" data-toggle="dropdown" href="#">ボタンだけ
<span class="caret"></span>
</button>
<!-- メニュー部分 -->
<p>メニュー部分</p>
<div class="dropdown clearfix">
<ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu" style="display: block; position: static; margin-bottom: 5px; *width: 180px;">
<li>
<a tabindex="-1" href="#">本</a>
</li>
<li>
<a tabindex="-1" href="#">DVD</a>
</li>
<li>
<a tabindex="-1" href="#">ミュージック</a>
</li>
<li class="divider"></li>
<li>
<a tabindex="-1" href="#">
<i class="icon-music"></i>アイコン付き
</a>
</li>
</ul>
</div>
<!-- 合わせたもの -->
<p>メニューとボタン</p>
<div class="btn-group">
<button class="btn btn-inverse dropdown-toggle" data-toggle="dropdown">ボタン
<span class="caret"></span>
</button>
<ul class="dropdown-menu">
<li>
<a tabindex="-1" href="#">本</a>
</li>
<li>
<a tabindex="-1" href="#">DVD</a>
</li>
<li>
<a tabindex="-1" href="#">ミュージック</a>
</li>
<li class="divider"></li>
<li>
<a tabindex="-1" href="#">
<i class="icon-music"></i>アイコン付き
</a>
</li>
</ul>
</div>[/html]
</div>
</div>
</div>
Bootstrapでインタラクティブ!タブナビゲーション
次はタブを使ったナビゲーション。タブをクリックすると画面遷移なしに内容が切り替わるもので、webアプリのメニュー切り替えなどにも使われてますね。この記事でDemoとCodeを切り替えるのに使ってるのもこのタブナビゲーションです。
<div class="tabbable">
<ul class="nav nav-tabs">
<li class="active" style="list-style:none">
<a href="#tabg1" data-toggle="tab">Demo</a>
</li>
<li style="list-style:none">
<a href="#tabg2" data-toggle="tab">Code</a>
</li>
</ul>
<div class="tab-content">
<div class="tab-pane active" id="tabg1">
<!-- デフォルト状態 -->
<p>デフォルト</p>
<div class="tabbable">
<ul class="nav nav-tabs">
<li class="active">
<a href="#taba1" data-toggle="tab">タブ 1</a>
</li>
<li>
<a href="#taba2" data-toggle="tab">タブ 2</a>
</li>
</ul>
<div class="tab-content">
<div class="tab-pane active" id="taba1">
<p>タブ1の中身</p>
</div>
<div class="tab-pane" id="taba2">
<p>タブ2の中身</p>
</div>
</div>
</div>
<br class="margin-top-middle">
<!-- タブの位置 -->
<p>横にタブ</p>
<div class="tabbable tabs-left">
<ul class="nav nav-tabs">
<li class="active">
<a href="#tabc1" data-toggle="tab">タブ 1</a>
</li>
<li>
<a href="#tabc2" data-toggle="tab">タブ 2</a>
</li>
</ul>
<div class="tab-content">
<div class="tab-pane active" id="tabc1">
<p>classにtabs-leftをつけるだけでOK</p>
</div>
<div class="tab-pane" id="tabc2">
<pre><code><!-- 左付き -->
<div class="tabbable tabs-left">
<!-- 右付き -->
<div class="tabbable tabs-right">
<!-- 下付き -->
<div class="tabbable tabs-below"></code></pre>
</div>
</div>
</div>
</div>
<div class="tab-pane" id="tabg2">[html]
<!-- デフォルト状態 -->
<p>デフォルト</p>
<div class="tabbable">
<ul class="nav nav-tabs">
<li class="active">
<a href="#taba1" data-toggle="tab">タブ 1</a>
</li>
<li>
<a href="#taba2" data-toggle="tab">タブ 2</a>
</li>
</ul>
<div class="tab-content">
<div class="tab-pane active" id="taba1">
<p>タブ1の中身</p>
</div>
<div class="tab-pane" id="taba2">
<p>タブ2の中身</p>
</div>
</div>
</div>
<!-- タブの位置 -->
<p>横にタブ</p>
<div class="tabbable tabs-left">
<ul class="nav nav-tabs">
<li class="active">
<a href="#tabc1" data-toggle="tab">タブ 1</a>
</li>
<li>
<a href="#tabc2" data-toggle="tab">タブ 2</a>
</li>
</ul>
<div class="tab-content">
<div class="tab-pane active" id="tabc1">
<p>classにtabs-leftをつけるだけでOK</p>
</div>
<div class="tab-pane" id="tabc2">
<pre><code>&lt;!-- 左付き --&gt;
&lt;div class=&quot;tabbable tabs-left&quot;&gt;
&lt;!-- 右付き --&gt;
&lt;div class=&quot;tabbable tabs-right&quot;&gt;
&lt;!-- 下付き --&gt;
&lt;div class=&quot;tabbable tabs-below&quot;&gt;</code></pre>
</div>
</div>
</div>[/html]
</div>
</div>
</div>
Bootstrapでインタラクティブ! Navbarの使い方
bootstrapのナビゲーションバーはレスポンシブ対応なので画面サイズによって見た目が切り替わります。モバイル向けやwebアプリの場合はなかなか重宝する機能。ただ横向きのみなので、YouTubeのようにサイドに置けるナビもあるとさらに良いです。こちらは今後に期待。
基本的な使い方はulのリストをdiv.navbar>div.navbar-innerで囲むだけ。レスポンシブ仕様のものはリストを展開するボタンをつけたりちょっと複雑になってます。
<div class="tabbable">
<ul class="nav nav-tabs">
<li class="active" style="list-style:none">
<a href="#tabh1" data-toggle="tab">Demo</a>
</li>
<li style="list-style:none">
<a href="#tabh2" data-toggle="tab">Code</a>
</li>
</ul>
<div class="tab-content">
<div class="tab-pane active" id="tabh1">
<!-- デフォルト -->
<p>デフォルト</p>
<div class="navbar">
<div class="navbar-inner">
<a class="brand" href="#">タイトル</a>
<ul class="nav">
<li class="active" style="list-style:none">
<a href="#">Home</a>
</li>
<li style="list-style:none">
<a href="#">Link1</a>
</li>
<li style="list-style:none">
<a href="#">Link2</a>
</li>
<li class="dropdown" style="list-style:none">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">DropDown
<b class="caret"></b>
</a>
<ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu">
<li>
<a tabindex="-1" href="#">Action</a>
</li>
<li>
<a tabindex="-1" href="#">Another action</a>
</li>
<li>
<a tabindex="-1" href="#">Something else here</a>
</li>
<li class="divider"></li>
<li>
<a tabindex="-1" href="#">Separated link</a>
</li>
</ul>
</li>
</ul>
</div>
</div>
<br class="margin-top-middle">
<!-- レスポンシブバージョン -->
<p>レスポンシブ版</p>
<div class="navbar">
<div class="navbar-inner">
<div class="container">
<a class="btn btn-navbar collapsed" data-toggle="collapse" data-target=".navbar-responsive-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</a>
<a class="brand" href="#">Title</a>
<div class="nav-collapse navbar-responsive-collapse collapse" style="height: 0px;">
<ul class="nav">
<li class="active" style="list-style:none">
<a href="#">Home</a>
</li>
<li style="list-style:none">
<a href="#">Link</a>
</li>
<li style="list-style:none">
<a href="#">Link</a>
</li>
<li class="dropdown" style="list-style:none">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown
<b class="caret"></b>
</a>
<ul class="dropdown-menu">
<li>
<a href="#">Action</a>
</li>
<li>
<a href="#">Another action</a>
</li>
<li>
<a href="#">Something else here</a>
</li>
<li class="divider"></li>
<li class="nav-header">Nav header</li>
<li>
<a href="#">Separated link</a>
</li>
<li>
<a href="#">One more separated link</a>
</li>
</ul>
</li>
</ul>
<form class="navbar-search pull-left" action="">
<input type="text" class="search-query span3" placeholder="Search">
</form>
<ul class="nav pull-right">
<li style="list-style:none">
<a href="#">Link</a>
</li>
<li class="divider-vertical" style="list-style:none"></li>
<li class="dropdown" style="list-style:none">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown
<b class="caret"></b>
</a>
<ul class="dropdown-menu">
<li>
<a href="#">Action</a>
</li>
<li>
<a href="#">Another action</a>
</li>
<li>
<a href="#">Something else here</a>
</li>
<li class="divider"></li>
<li>
<a href="#">Separated link</a>
</li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
<div class="tab-pane" id="tabh2">[html]
<!-- デフォルト -->
<p>デフォルト</p>
<div class="navbar">
<div class="navbar-inner">
<a class="brand" href="#">タイトル</a>
<ul class="nav">
<li class="active">
<a href="#">Home</a>
</li>
<li>
<a href="#">Link1</a>
</li>
<li>
<a href="#">Link2</a>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">DropDown
<b class="caret"></b>
</a>
<ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu">
<li>
<a tabindex="-1" href="#">Action</a>
</li>
<li>
<a tabindex="-1" href="#">Another action</a>
</li>
<li>
<a tabindex="-1" href="#">Something else here</a>
</li>
<li class="divider"></li>
<li>
<a tabindex="-1" href="#">Separated link</a>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- レスポンシブバージョン -->
<p>レスポンシブ版</p>
<div class="navbar">
<div class="navbar-inner">
<div class="container">
<a class="btn btn-navbar collapsed" data-toggle="collapse" data-target=".navbar-responsive-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</a>
<a class="brand" href="#">Title</a>
<div class="nav-collapse navbar-responsive-collapse collapse" style="height: 0px;">
<ul class="nav">
<li class="active">
<a href="#">Home</a>
</li>
<li>
<a href="#">Link</a>
</li>
<li>
<a href="#">Link</a>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown
<b class="caret"></b>
</a>
<ul class="dropdown-menu">
<li>
<a href="#">Action</a>
</li>
<li>
<a href="#">Another action</a>
</li>
<li>
<a href="#">Something else here</a>
</li>
<li class="divider"></li>
<li class="nav-header">Nav header</li>
<li>
<a href="#">Separated link</a>
</li>
<li>
<a href="#">One more separated link</a>
</li>
</ul>
</li>
</ul>
<form class="navbar-search pull-left" action="">
<input type="text" class="search-query span2" placeholder="Search">
</form>
<ul class="nav pull-right">
<li>
<a href="#">Link</a>
</li>
<li class="divider-vertical"></li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown
<b class="caret"></b>
</a>
<ul class="dropdown-menu">
<li>
<a href="#">Action</a>
</li>
<li>
<a href="#">Another action</a>
</li>
<li>
<a href="#">Something else here</a>
</li>
<li class="divider"></li>
<li>
<a href="#">Separated link</a>
</li>
</ul>
</li>
</ul>
</div>
<!-- /.nav-collapse -->
</div>
</div>
<!-- /navbar-inner -->
</div>[/html]
</div>
</div>
</div>
Bootstrapでインタラクティブ! サムネイルの使い方
次はサムネイル。画像のみを表示するタイプと、タイトルや抜粋などインデックスっぽい使い方ができるものがある。
<div class="tabbable">
<ul class="nav nav-tabs">
<li class="active" style="list-style:none">
<a href="#tabi1" data-toggle="tab">Demo</a>
</li>
<li style="list-style:none">
<a href="#tabi2" data-toggle="tab">Code</a>
</li>
</ul>
<div class="tab-content">
<div class="tab-pane active" id="tabi1">
<!-- 画像のみのサムネイル -->
<p>画像のみ</p>
<ul class="thumbnails">
<li class="span3" style="list-style:none">
<a href="#" class="thumbnail">
<img src="http://tetra-themes.com/wp-content/uploads/2013/06/png1.png" alt="png" width="300" height="200" class="alignnone size-full wp-image-1254" style="margin:0"/>
</a>
</li>
<li class="span3" style="list-style:none">
<a href="#" class="thumbnail">
<img src="http://tetra-themes.com/wp-content/uploads/2013/06/png1.png" alt="png" width="300" height="200" class="alignnone size-full wp-image-1254" style="margin:0"/>
</a>
</li>
</ul>
<br class="margin-top-middle">
<!-- 画像とタイトルなど -->
<p>画像とタイトルなど</p>
<ul class="thumbnails">
<li class="span3" style="list-style:none">
<div class="thumbnail">
<img src="http://tetra-themes.com/wp-content/uploads/2013/06/png1.png" alt="png" width="300" height="200" class="alignnone size-full wp-image-1254" style="margin:0"/>
<h3>ここにタイトル</h3>
<p>サムネイルのキャプションなどをここに入れる</p>
<p>
<button class="btn btn-primary">More</button>
</p>
</div>
</li>
<li class="span3" style="list-style:none">
<div class="thumbnail">
<img src="http://tetra-themes.com/wp-content/uploads/2013/06/png1.png" alt="png" width="300" height="200" class="alignnone size-full wp-image-1254" style="margin:0"/>
<h3>ここにタイトル</h3>
<p>サムネイルのキャプションなどをここに入れる</p>
<p>
<button class="btn btn-primary">More</button>
</p>
</div>
</li>
</ul>
</div>
<div class="tab-pane" id="tabi2">[html]
<!-- 画像のみのサムネイル -->
<p>画像のみ</p>
<ul class="thumbnails">
<li class="span3">
<a href="#" class="thumbnail">
<img data-src="holder.js/300x200" alt="">
</a>
</li>
<li class="span3">
<a href="#" class="thumbnail">
<img data-src="holder.js/300x200" alt="">
</a>
</li>
</ul>
<!-- 画像とタイトルなど -->
<p>画像とタイトルなど</p>
<ul class="thumbnails">
<li class="span3">
<div class="thumbnail">
<img data-src="holder.js/300x200" alt="">
<h3>ここにタイトル</h3>
<p>サムネイルのキャプションなどをここに入れる</p>
<p>
<a href="#" class="btn btn-primary">More</a>
</p>
</div>
</li>
<li class="span3">
<div class="thumbnail">
<img data-src="holder.js/300x200" alt="">
<h3>ここにタイトル</h3>
<p>サムネイルのキャプションなどをここに入れる</p>
<p>
<a href="#" class="btn btn-primary">More</a>
</p>
</div>
</li>
</ul>[/html]
</div>
</div>
</div>
Bootstrapでインタラクティブ! アラートの使い方
フォームの入力ミスやアップロード完了などユーザーにレスポンスを返す場面で使えるアラート。クローズボタンも付いてるので結構使えそうなコンポーネントになってます。
<div class="tabbable">
<ul class="nav nav-tabs">
<li class="active" style="list-style:none">
<a href="#tabj1" data-toggle="tab">Demo</a>
</li>
<li style="list-style:none">
<a href="#tabj2" data-toggle="tab">Code</a>
</li>
</ul>
<div class="tab-content">
<div class="tab-pane active" id="tabj1">
<!-- アラートの色いろいろ -->
<p>アラート色いろ</p>
<div class="alert">
<button type="button" class="close" data-dismiss="alert">×</button>
<strong>Warning!</strong>Best check yo self, you're not looking too good.
</div>
<div class="alert alert-error">
<button type="button" class="close" data-dismiss="alert">×</button><strong>Oh snap!</strong> Change a few things up and try submitting again.
</div>
<div class="alert alert-success">
<button type="button" class="close" data-dismiss="alert">×</button><strong>Well done!</strong> You successfully read this important alert message.
</div>
<div class="alert alert-info">
<button type="button" class="close" data-dismiss="alert">×</button><strong>Heads up!</strong> This alert needs your attention, but it's not super important.
</div>
</div>
<div class="tab-pane" id="tabj2">[html]
<!-- アラートの色いろいろ -->
<p>アラート色いろ</p>
<!-- 黄色 -->
<div class="alert">
<button type="button" class="close" data-dismiss="alert">&times;</button>
<strong>Warning!</strong>Best check yo self, you're not looking too good.
</div>
<bd48c0dc3c8160b9ea26770d090a9793 />
<div class="alert alert-error">
<button type="button" class="close" data-dismiss="alert">×</button>
<strong>Oh snap!</strong> Change a few things up and try submitting again.
</div>
<719cd546f6b485e30496bb0a4d16e870 />
<div class="alert alert-success">
<button type="button" class="close" data-dismiss="alert">×</button>
<strong>Well done!</strong> You successfully read this important alert message.
</div>
<d4f3bd7ab29c794406f0139db7b11098 />
<div class="alert alert-info">
<button type="button" class="close" data-dismiss="alert">×</button>
<strong>Heads up!</strong> This alert needs your attention, but it's not super important.
</div>[/html]
</div>
</div>
</div>
Bootstrapでインタラクティブ! Progress bars
ローディング画面や達成率などを表示するのに使えるプログレスバー。こちらも各色揃って、ストライプ柄やローディング中のものなどいろいろあります。
<div class="tabbable">
<ul class="nav nav-tabs">
<li class="active" style="list-style:none">
<a href="#tabk1" data-toggle="tab">Demo</a>
</li>
<li style="list-style:none">
<a href="#tabk2" data-toggle="tab">Code</a>
</li>
</ul>
<div class="tab-content">
<div class="tab-pane active" id="tabk1">
<!-- プログレスバーいろいろ -->
<p>見た目いろいろ</p>
<!-- ノーマル -->
<div class="progress">
<div class="bar" style="width: 60%;"></div>
</div>
<!-- ストライプ -->
<div class="progress progress-striped">
<div class="bar" style="width: 20%;"></div>
</div>
<!-- ロード中 -->
<div class="progress progress-striped active">
<div class="bar" style="width: 40%;"></div>
</div>
<!-- スタック -->
<div class="progress">
<div class="bar bar-success" style="width: 35%;"></div>
<div class="bar bar-warning" style="width: 20%;"></div>
<div class="bar bar-danger" style="width: 10%;"></div>
</div>
<br class="margin-top-middle">
<!-- カラー -->
<p>カラーいろいろ</p>
<div class="progress progress-info">
<div class="bar" style="width: 20%"></div>
</div>
<div class="progress progress-success">
<div class="bar" style="width: 40%"></div>
</div>
<div class="progress progress-warning">
<div class="bar" style="width: 60%"></div>
</div>
<div class="progress progress-danger">
<div class="bar" style="width: 80%"></div>
</div>
</div>
<div class="tab-pane" id="tabk2">[html]
<!-- プログレスバーいろいろ -->
<p>見た目いろいろ</p>
<!-- ノーマル -->
<div class="progress">
<div class="bar" style="width: 60%;"></div>
</div>
<!-- ストライプ -->
<div class="progress progress-striped">
<div class="bar" style="width: 20%;"></div>
</div>
<!-- ロード中 -->
<div class="progress progress-striped active">
<div class="bar" style="width: 40%;"></div>
</div>
<!-- スタック -->
<div class="progress">
<div class="bar bar-success" style="width: 35%;"></div>
<div class="bar bar-warning" style="width: 20%;"></div>
<div class="bar bar-danger" style="width: 10%;"></div>
</div>
<!-- カラー -->
<p>カラーいろいろ</p>
<!-- 青 -->
<div class="progress progress-info">
<div class="bar" style="width: 20%"></div>
</div>
<!-- 緑 -->
<div class="progress progress-success">
<div class="bar" style="width: 40%"></div>
</div>
<!-- 黄 -->
<div class="progress progress-warning">
<div class="bar" style="width: 60%"></div>
</div>
<!-- 赤 -->
<div class="progress progress-danger">
<div class="bar" style="width: 80%"></div>
</div>[/html]
</div>
</div>
</div>
Next…
ここまでbootstrapのcomponentsをまとめてみました。いろんなコンポーネントがあって面白いですが、デフォルトではデザインがちょっと...という気がしなくもないです。UIに関しては近いうちに各コンポーネントのスタイルセットみたいなものを公開してみたいです。