メインコンテンツへスキップ

Bootstrap4.xの使い方をBootstrap3.xからの変更箇所を交えて解説しています。

リストグループ(List group) v4.0.0一部変更 v4.3.0一部追加

リストグループは、一連のコンテンツを表示するための柔軟で強力なコンポーネント。それらを修正して拡張して、その中のあらゆるコンテンツに対応。

基本のリストグループ(Basic example)

最も基本的なリストグループは、リストアイテムと適切なクラスを持つ順不同のリスト。それに続くオプションや必要に応じて独自のCSSを使って構築。

見本
  • リスト1
  • リスト2
  • リスト3
設定例
<ul class="list-group" style="max-width: 400px;">
	<li class="list-group-item">リスト1</li>
	<li class="list-group-item">リスト2</li>
	<li class="list-group-item">リスト3</li>
</ul>

【設定】

  • ul.list-group > li.list-group-item

 

アクティブなアイテム(Active items)

.active.list-group-item に追加すると、現在のアクティブな選択を示す。

見本
  • リスト1
  • リスト2
  • リスト3
設定例
<ul class="list-group" style="max-width: 400px;">
	<li class="list-group-item active">リスト1</li>
	<li class="list-group-item">リスト2</li>
	<li class="list-group-item">リスト3</li>
</ul>

【設定】

  • アクティブにしたいアイテムの .list-group-item.active を追加

 

無効のアイテム(Disabled items)v4.2.1設定変更

.disabled.list-group-item に追加すると、無効に見えるようになる。.disabled を持つ要素の中には、(リンクなど)クリックイベントを完全に無効にするカスタムJavaScriptが必要な場合がある。

見本
  • リスト1
  • リスト2
  • リスト3
設定例
<ul class="list-group" style="max-width: 400px;">
	<li class="list-group-item disabled" aria-disabled="true">リスト1</li>
	<li class="list-group-item">リスト2</li>
	<li class="list-group-item">リスト3</li>
</ul>

【設定】

  • 無効にしたいアイテムの .list-group-item.disabled を追加

アクセシビリティの設定】

  • .disabled と同じ要素に aria-disabled="true"(支援技術にdisabled属性が指定されたのと同じ状態であること伝える)を入れる

【変更履歴】

  • 【v4.2.1】.disabled 関連のアクセシビリティの設定を追加

【Bootstrap3.xとの変更箇所】

  • リストにカーソルを合わせた際に、無効化カーソル(cursor: not-allowed;)に変化しなくなった

 

.list-group-item-action を追加することで、ホバー、無効、アクティブ状態のアクション可能なリストグループアイテムを作成するには、<a> または <button> を使用する。これらの擬似クラスを分離して、非対話型要素(<li> または <div> など)で作成されたリストグループがクリックまたはタップ機能を提供しないようにする。

ここでは、標準の .btn クラスは使用しないこと。

1. リンク付きリストグループ v4.2.1設定変更

見本
Bootstrap3.xの設定例
<div class="list-group" style="max-width: 400px;">
	<a href="#" class="list-group-item active">アクティブ</a>
	<a href="#" class="list-group-item">ホーム</a>
	<a href="#" class="list-group-item">プロフィール</a>
	<a href="#" class="list-group-item disabled" tabindex="-1" aria-disabled="true">無効</a>
</div>
Bootstrap4.xの設定例 緑背景が変更箇所
<div class="list-group" style="max-width: 400px;">
	<a href="#" class="list-group-item list-group-item-action active">アクティブ</a>
	<a href="#" class="list-group-item list-group-item-action">ホーム</a>
	<a href="#" class="list-group-item list-group-item-action">プロフィール</a>
	<a href="#" class="list-group-item list-group-item-action disabled" tabindex="-1" aria-disabled="true">無効</a>
</div>

【設定】

  • div.list-group > a.list-group-item.list-group-item-action
  • アクティブ化したいリンクには、a.list-group-item.list-group-item-action.active を追加
  • a.list-group-item.list-group-item-action 内に span.badge.badge-secondary.badge-pill.float-right を入れるとバッジが表示
  • 無効化したいリンクには、a.list-group-item.list-group-item-action.disabled を追加

【注意】

  • リンク付きリストグループはリスト形式(ul > li > a)ではなく、div > a で作成

アクセシビリティの設定】

  • .disabled と同じ要素に tabindex="-1" aria-disabled="true"(支援技術にdisabled属性が指定されたのと同じ状態であること伝える)を入れる

【変更履歴】

  • 【v4.2.1】.disabled 関連のアクセシビリティの設定を追加

【Bootstrap3.xとの変更箇所】

  • a.list-group-itema.list-group-item.list-group-item-action

2. ボタンによるリストグループ v4.0.0設定変更、v4.3.0機能変更

<button> では、.disabled クラスの代わりに disabled 属性も使用可能。悲しいことに、<a>disabled 属性をサポートしていない。

見本
Bootstrap3.xの設定例 赤背景が変更箇所
<div class="list-group" style="max-width: 400px;">
	<button type="button" class="list-group-item active">アクティブ</button>
	<button type="button" class="list-group-item">ホーム</button>
	<button type="button" class="list-group-item">プロフィール</button>
	<button type="button" class="list-group-item disabled">無効</button>
</div>
Bootstrap4.xの設定例 緑背景が変更箇所
<div class="list-group" style="max-width: 400px;">
	<button type="button" class="list-group-item list-group-item-action active">アクティブ</button>
	<button type="button" class="list-group-item list-group-item-action">ホーム</button>
	<button type="button" class="list-group-item list-group-item-action">プロフィール</button>
	<button type="button" class="list-group-item list-group-item-action" disabled>無効</button>
</div>

【設定】

  • div.list-group > button.list-group-item.list-group-item-action
  • アクティブ化したいボタンには、a.list-group-item.list-group-item-action.active を追加
  • 無効化したいボタンには、<button>disabled 属性を追加

【変更履歴】

  • 【v4.3.0】カーソルが矢印カーソル()から指カーソル()に変更(無効のリンクを除く)

【Bootstrap3.xとの変更箇所】

  • button.list-group-itembutton.list-group-item.list-group-item-action
  • 無効化したいボタン:button.disabledbutton[disabled]

 

枠なし(Flush)4.0.0-安定版新設

.list-group-flush を追加すると、親コンテナ(カードなど)内でリストグループアイテムを端から端まで描画するために、いくつかの枠線と丸みのある角を削除可能。

見本
  • リスト1
  • リスト2
  • リスト3
設定例
<ul class="list-group list-group-flush" style="max-width: 400px;">
	<li class="list-group-item">リスト1</li>
	<li class="list-group-item">リスト2</li>
	<li class="list-group-item">リスト3</li>
</ul>

 

水平スタイル(Horizontal)v4.3.0新設

全てのブレークポイントにわたってリストグループアイテムのレイアウトを縦並びから横並びに変更するには .list-group-horizontal を追加する。あるいは、レスポンシブ形式の .list-group-horizontal-{sm|md|lg|xl} を選択して、そのブレークポイントの min-width で始まるリストグループを水平にする。今のところ水平リストグループは枠なしリストグループと組み合わせることは不可

ヒント:横幅の場合、等幅のリストグループアイテムが必要なら、各リストグループアイテムに .flex-fill を追加すること。

見本

●全てのブレークポイントで水平スタイル .list-group-horizontal

  • リスト1
  • リスト2(長め)
  • リスト3

●ビューポートが576px以上で水平スタイル .list-group-horizontal-sm

  • リスト1
  • リスト2(長め)
  • リスト3

●ビューポートが768px以上で水平スタイル .list-group-horizontal-md

  • リスト1
  • リスト2(長め)
  • リスト3

●ビューポートが992px以上で水平スタイル .list-group-horizontal-lg

  • リスト1
  • リスト2(長め)
  • リスト3

●ビューポートが1200px以上で水平スタイル .list-group-horizontal-xl

  • リスト1
  • リスト2(長め)
  • リスト3

●等幅のリストグループ

  • リスト1
  • リスト2(長め)
  • リスト3
設定例
全てのブレークポイント<ul class="list-group list-group-horizontal">
	<li class="list-group-item">リスト1</li>
	<li class="list-group-item">リスト2(長め)</li>
	<li class="list-group-item">リスト3</li>
</ul>
特定のブレークポイント<ul class="list-group list-group-horizontal-**">
	<li class="list-group-item">リスト1</li>
	<li class="list-group-item">リスト2(長め)</li>
	<li class="list-group-item">リスト3</li>
</ul>
等幅のリストグループ<ul class="list-group list-group-horizontal">
	<li class="list-group-item flex-fill">リスト1</li>
	<li class="list-group-item flex-fill">リスト2(長め)</li>
	<li class="list-group-item flex-fill">リスト3</li>
</ul>

【設定】

  • 常にリストグループを水平スタイルにするには .list-grouplist-group-horizontal を追加
  • 特定のビューポートでリストグループを水平スタイルにするには .list-grouplist-group-horizontal-{sm|md|lg|xl} を追加
  • 水平リストの幅を等幅にするには、.list-group-item.flex-fill を追加

 

リストグループの背景色(Contextual classes)

背景色のクラスを使用して、状態が反映された背景と色でリストアイテムのスタイルを設定。

背景色の種類
  • Primary:.list-group-item-primary v4.0.0追加
  • Secondary:.list-group-item-secondary v4.0.0追加
  • Success:.list-group-item-success
  • Info:.list-group-item-info
  • Warning:.list-group-item-warning
  • Danger:.list-group-item-danger
  • Light:.list-group-item-light v4.0.0追加
  • Dark:.list-group-item-dark v4.0.0追加
  • ※通常のアイテム
設定例
<ul class="list-group" style="max-width: 500px;">
	<li class="list-group-item list-group-item-primary">リスト</li>
	...
</ul>

背景色のクラスも .list-group-item-action で動作。ここではホバースタイルも追加されていることに注意。.active 状態もサポートし、背景色のついたリストグループアイテムのアクティブな選択を示すためにそれを適用。

背景色の種類
設定例
<div class="list-group" style="max-width: 500px;">
	<a href="#" class="list-group-item list-group-item-action list-group-item-primary active">アクティブ化</a>
	<a href="#" class="list-group-item list-group-item-action list-group-item-primary">アイテム</a>
	...
</div>

【設定】

  • 基本のリストグループ:li.list-group-item.list-group-item-{themecolor}.list-group-item-{themecolor} は、上記の「背景色の種類」から選択)を追加
    • {themecolor} は、primary, secondary, success, info, warning, danger, light, dark のいずれかを選択
  • リンク付きリストグループ:a.list-group-item.list-group-item-action.list-group-item-{themecolor}(上記の「背景色の種類」から選択)を追加し、さらに .active を追加するとアクティブ用の背景色になる

 

枠線の色 ※裏技

各リストの枠線の色を変える。

見本
  • リスト1
  • リスト2
  • リスト3
設定例
<ul class="list-group" style="max-width: 400px;">
	<li class="list-group-item border-warning">リスト1</li>
	<li class="list-group-item border-info">リスト2</li>
	<li class="list-group-item border-danger">リスト3</li>
</ul>

【設定】

  • .list-group-item.border-{themecolor} を追加(.border-{themecolor}境界ユーティリティの枠の色の種類から選択)
    .list-group.border-{themecolor} を追加しても無効。全て同じ枠の色に設定する場合は、全ての .list-group-item に設定が必要

【注意】

  • リストごとに色を変える場合、最後のリスト以外は下部の線は指定した色が反映されない(次のリストで指定した色が反映)

 

バッジ付きリストグループ(With badges)v4.0.0設定変更

いくつかのユーティリティの助けを借りて、未読の数、活動などを表示するために、リストグループアイテムにバッジを追加。

見本
  • リスト114
  • リスト22
  • リスト31
Bootstrap3.xの設定例 赤背景が変更箇所
<ul class="list-group" style="max-width: 400px;">
	<li class="list-group-item">
		<span class="badge">14</span>
		リスト1
	</li>
	<li class="list-group-item">
		<span class="badge">2</span>
		リスト2
	</li>
	<li class="list-group-item">
		<span class="badge">1</span>
		リスト3
	</li>
</ul>
Bootstrap4.xの設定例 緑背景が変更箇所
<ul class="list-group" style="max-width: 400px;">
	<li class="list-group-item d-flex justify-content-between align-items-center">
		リスト1
		<span class="badge badge-primary badge-pill">14</span>
	</li>
	<li class="list-group-item d-flex justify-content-between align-items-center">
		リスト2
		<span class="badge badge-primary badge-pill">2</span>
	</li>
	<li class="list-group-item d-flex justify-content-between align-items-center">
		リスト3
		<span class="badge badge-primary badge-pill">1</span>
	</li>
</ul>

【設定】

  • li.list-group-item.d-flex.justify-content-between.align-items-center(flexboxで両端に並べる) > span.badge.badge-{themecolor}.badge-pill.badge-{themecolor} は、「バッジの種類」から選択)

【注意】

  • 右側にバッジをとりつける場合は、《アイテムの内容》⇒《バッジの表示》の順に記載する必要がある

【Bootstrap3.xとの変更箇所】

  • li.list-group-item.d-flex.justify-content-between.align-items-center を追加
  • span.badge.badge-{themecolor}.badge-pill を追加
  • 右側にバッジをとりつける場合は、リストアイテムの内容とバッジの記載順を逆にする

 

ヘッダありリンク付きリストグループ(Custom content)v4.2.1設定変更

Flexユーティリティの助けを借りて、下記のようなリンクリストグループの場合でも、ほぼすべてのHTMLを追加すること。

見本
Bootstrap3.xの設定例 赤背景が変更箇所
<div class="list-group" style="max-width: 400px;">
	<a href="#" class="list-group-item list-group-item-action active">
		<h4 class="list-group-item-heading">リスト1のヘッダ</h4>
		<p class="list-group-item-text">リスト1のコンテンツ</p>
	</a>
	<a href="#" class="list-group-item list-group-item-action">
		<h4 class="list-group-item-heading">リスト2のヘッダ</h4>
		<p class="list-group-item-text">リスト2のコンテンツ</p>
	</a>
	<a href="#" class="list-group-item list-group-item-action">
		<h4 class="list-group-item-heading">リスト3のヘッダ</h4>
		<p class="list-group-item-text">リスト3のコンテンツ</p>
	</a>
</div>
Bootstrap4.xの設定例 緑背景が変更箇所
<div class="list-group" style="max-width: 400px;">
	<a href="#" class="list-group-item list-group-item-action active">
		<div class="d-flex w-100 justify-content-between">
			<h5 class="mb-1">リスト1のヘッダ</h5>
			<small>3日前</small>
		</div>
		<p class="mb-1">リスト1のコンテンツ</p>
		<small>サブコンテンツ</small>
	</a>
	<a href="#" class="list-group-item list-group-item-action">
		<div class="d-flex w-100 justify-content-between">
			<h5 class="mb-1">リスト2のヘッダ</h5>
			<small>3日前</small>
		</div>
		<p class="mb-1">リスト2のコンテンツ</p>
		<small>サブコンテンツ</small>
	</a>
	<a href="#" class="list-group-item list-group-item-action">
		<div class="d-flex w-100 justify-content-between">
			<h5 class="mb-1">リスト3のヘッダ</h5>
			<small>3日前</small>
		</div>
		<p class="mb-1">リスト3のコンテンツ</p>
		<small>サブコンテンツ</small>
	</a>
</div>

【設定】

  • a.list-group-item.list-group-item-action > {div.d-flex.w-100.justify-content-between(アイテムの幅を100%にして両端揃えに) > [h5.mb-1(下側のマージンを0.25remに) + <small>《サブコンテンツ》]}《ヘッダ》 + [p.mb-1(下側のマージンを0.25remに) + <small>《サブコンテンツ》]《コンテンツ》

【変更履歴】

  • 【v4.2.1】リンク(a.list-group-item.list-group-item-action)の設定 で .flex-column.align-items-start(アイテムを縦積み左寄せ)が不要に

【Bootstrap3.xとの変更箇所】

  • リンク:a.list-group-item.list-group-item-action.flex-column.align-items-start を追加
  • ヘッダ:h4.list-group-item-headingdiv.d-flex.w-100.justify-content-between > h5.mb-1 + <small>
  • コンテンツ:p.list-group-item-textp.mb-1 + <small>

 

JavaScriptの動作(JavaScript behavior)v4.0.0新設

個別にまたはコンパイルされた bootstrap.js ファイルを通じてタブJavaScriptプラグインを使用して、リストグループを拡張して、ローカルコンテンツのタブ切替パネルを作成。

見本
設定例
<div class="row">
	<div class="col-4">
		<div class="list-group" id="list-tab" role="tablist">
			<a class="list-group-item list-group-item-action active" id="list-home-list" data-toggle="list" href="#list-home" role="tab" aria-controls="list-home">ホーム</a>
			<a class="list-group-item list-group-item-action" id="list-profile-list" data-toggle="list" href="#list-profile" role="tab" aria-controls="list-profile">プロフィール</a>
			<a class="list-group-item list-group-item-action" id="list-messages-list" data-toggle="list" href="#list-messages" role="tab" aria-controls="list-messages">メッセージ</a>
			<a class="list-group-item list-group-item-action" id="list-settings-list" data-toggle="list" href="#list-settings" role="tab" aria-controls="list-settings">セッティング</a>
		</div>
	</div>
	<div class="col-8">
		<div class="tab-content" id="nav-tabContent">
			<div class="tab-pane fade show active" id="list-home" role="tabpanel" aria-labelledby="list-home-list">ホームの文章です。...</div>
			<div class="tab-pane fade" id="list-profile" role="tabpanel" aria-labelledby="list-profile-list">プロフィールの文章です。...</div>
			<div class="tab-pane fade" id="list-messages" role="tabpanel" aria-labelledby="list-messages-list">メッセージの文章です。...</div>
			<div class="tab-pane fade" id="list-settings" role="tabpanel" aria-labelledby="list-settings-list">セッティングの文章です。...</div>
		</div>
	</div>
</div>

データ属性の使用(Using data attributes)

単に data-toggle="list" を指定するだけで、要素にJavaScriptを書くことなく、リストグループのナビゲーションを有効にすることが可能。これらのデータ属性は、.list-group-item で使用。

設定例
<!-- リストグループ -->
<div class="list-group" id="myList" role="tablist">
	<a class="list-group-item list-group-item-action active" data-toggle="list" href="#home" role="tab">ホーム</a>
	<a class="list-group-item list-group-item-action" data-toggle="list" href="#profile" role="tab">プロフィール</a>
	<a class="list-group-item list-group-item-action" data-toggle="list" href="#messages" role="tab">メッセージ</a>
	<a class="list-group-item list-group-item-action" data-toggle="list" href="#settings" role="tab">セッティング</a>
</div>

<!-- パネル部分 -->
<div class="tab-content">
	<div class="tab-pane active" id="home" role="tabpanel">...</div>
	<div class="tab-pane" id="profile" role="tabpanel">...</div>
	<div class="tab-pane" id="messages" role="tabpanel">...</div>
	<div class="tab-pane" id="settings" role="tabpanel">...</div>
</div>

JavaScript経由で(Via JavaScript)サンプル

JavaScriptを使用してタブ切替可能なリストアイテムを有効にする(各リストアイテムは個別に有効にする必要あり):

設定例
JavaScript$('#myList a').on('click',function (e) {
	e.preventDefault()
	$(this).tab('show')
})

いくつかの方法で個々のリストアイテムをアクティブにすることが可能:

JavaScript$('#myList a[href="#profile"]').tab('show') // リストアイテム名で選択
$('#myList a:first-child').tab('show') // 最初のリストアイテムを選択
$('#myList a:last-child').tab('show') // 最後のリストアイテムを選択
$('#myList a:nth-child(3)').tab('show') // 3番目のリストアイテムを選択

フェード効果(Fade effect)

タブパネルをフェードインさせるには、各 .tab-pane.fade を追加。最初のタブパネルには、最初のコンテンツを表示させるために .show が必要。

メソッド(Methods)

$().tab

リストアイテム要素とコンテンツコンテナをアクティブにする。タブは、DOM内のコンテナの接点をターゲットとする data-target または href が必要。

HTML<div class="list-group" id="myList" role="tablist">
	<a class="list-group-item list-group-item-action active" data-toggle="list" href="#home" role="tab">ホーム</a>
	<a class="list-group-item list-group-item-action" data-toggle="list" href="#profile" role="tab">プロフィール</a>
	<a class="list-group-item list-group-item-action" data-toggle="list" href="#messages" role="tab">メッセージ</a>
	<a class="list-group-item list-group-item-action" data-toggle="list" href="#settings" role="tab">セッティング</a>
</div>

<div class="tab-content">
	<div class="tab-pane active" id="home" role="tabpanel">...</div>
	<div class="tab-pane" id="profile" role="tabpanel">...</div>
	<div class="tab-pane" id="messages" role="tabpanel">...</div>
	<div class="tab-pane" id="settings" role="tabpanel">...</div>
</div>
JavaScript<script>
	$(function () {
		$('#myList a:last-child').tab('show')
	})
</script>

.tab('show')

指定されたリストアイテムを選択し、関連するコンテンツを表示。その前に選択された他のリストアイテムは選択解除され、関連するコンテンツは非表示になる。タブパネル区画が実際に表示される前に(例えば、shown.bs.tab イベント発動前)に呼び出し元に戻る

JavaScript$('#someListItem').tab('show')

イベント(Events)

新しいタブを表示すると、イベントは次の順序で発動:

  1. hide.bs.tab(現在のアクティブなタブに)
  2. show.bs.tab(次に表示されるタブに)
  3. hidden.bs.tab(以前のアクティブなタブでは hide.bs.tab イベントと同じもの)
  4. shown.bs.tab(新しくアクティブになって表示されるタブでは show.bs.tab イベントと同じもの)

既にアクティブなタブがない場合、hide.bs.tabhidden.bs.tab イベントは発動しない。

イベントタイプ 説明
show.bs.tab このイベントは、タブが表示された後、タブの表示で発動。アクティブなタブとアクティブなタブ(使用可能な場合)をそれぞれターゲットにするには event.targetevent.relatedTarget を使用
shown.bs.tab このイベントは、タブが表示された後、タブの表示で発動。アクティブなタブと以前のアクティブなタブ(使用可能な場合)をそれぞれターゲットにするには event.targetevent.relatedTarget を使用
hide.bs.tab このイベントは、新しいタブが表示されるときに発動(従って、以前のアクティブなタブは非表示になる)。event.targetevent.relatedTarget を使用して、現在のアクティブなタブと新しいアクティブになる新しいタブをそれぞれターゲットにする
hidden.bs.tab このイベントは、新しいタブが表示された後に発動(従って、以前のアクティブなタブは非表示になる)。event.targetevent.relatedTarget を使用して、以前のアクティブなタブと新しいアクティブなタブをそれぞれターゲットにする
JavaScript$('a[data-toggle="list"]').on('shown.bs.tab', function (e) {
	e.target // アクティブなタブ
	e.relatedTarget // 以前のタブ
})