Bootstrap 4 tutorial

コンポーネント(8): メディアオブジェクト / モーダル

メディアオブジェクト

基本構成

48x48 placeholder image
Media heading
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

ネスト

div.media-body の子として div.media をネストして配置できる。

2重ネストの例

48x48 placeholder image
Media heading
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
48x48 placeholder image
Media heading
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

3重ネスト(以下何重でもOK)

48x48 placeholder image
Media heading
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
48x48 placeholder image
Media heading
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
48x48 placeholder image
Media heading
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

アラインメント

Flexboxユーティリティ.align-self(start|center|end) を用いる。次は img の配置例(枠に確認用のボーダーを追加)。

img.align-self-start

48x48 placeholder image
Top-aligned media
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

img.align-self-center

48x48 placeholder image
Center-aligned media
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

img.align-self-end

48x48 placeholder image
Bottom-aligned media
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

コンテンツの順序

(1) 要素の順序を変更して img を最後にすると右配置になる

Media heading
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
48x48 placeholder image

(2) Flexboxユーティリティ.order-* を使い順序を入れ替えても同じことができる

48x48 placeholder image
Media heading
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

リスト要素を用いる場合

ul ( ol でも同じ)を用いた例

表示サンプル: 常時表示するように変更したもの(通常の初期状態は非表示)

モーダルの起動

モーダルはボタンを使って起動できる。起動ボタンの基本構成は次の通り。

次のボタンを押すとページが暗転し、モーダルが上からスライドする。

動作のポイント(まとめ)

モーダルの縦スクロール

モーダルの高さが表示デバイスより大きい場合はスクロールバーを表示する。この時スクロール対象はモーダルに設定され、元ページはスクロールせずモーダルだけ縦スクロールする。次のデモを起動すると確認できる。

画面中央への表示

デフォルトは中央上揃えだが、本体 div.modal-dialog.modal-dialog-centered を追加すると画面中央揃えで表示する。

ツールチップとポップオーバー

ボディ内部ではほとんどの機能を利用できる。次は内部にツールチップポップオーバーを用いた例。

グリッド

モーダルボディにグリッドを用いた例。

起動時のコンテント更新

同じモーダルの起動時に起動ボタンの情報を読んで表示を変える例(要JavaScript)。

$('#examplemodal').on('show.bs.modal', function(event) {
  var button = $(event.relatedTarget);
  var recipient = button.data('whatever');
  var modal = $(this);
  modal.find('.modal-title').text('New message to ' + recipient);
  modal.find('.modal-body input').val(recipient);
});

サイズ指定

div.modal-dialog.modal-(xl|lg|sm) を用いる。