コンポーネント(8): メディアオブジェクト / モーダル
div.media
div.media-body
の子として div.media
をネストして配置できる。
2重ネストの例
3重ネスト(以下何重でもOK)
Flexboxユーティリティの .align-self(start|center|end)
を用いる。次は img
の配置例(枠に確認用のボーダーを追加)。
img.align-self-start
img.align-self-center
img.align-self-end
(1) 要素の順序を変更して img
を最後にすると右配置になる
(2) Flexboxユーティリティの .order-*
を使い順序を入れ替えても同じことができる
ul
( ol
でも同じ)を用いた例
ul.list-unstyled
.list-unstyled
で先頭シンボルを非表示(⇒ リストのデフォルト書式解除)li.media.my-3
表示サンプル: 常時表示するように変更したもの(通常の初期状態は非表示)
div.modal.fade
属性
.fade
- アニメーション効果用(外すと起動時にスライドしない)id="{モーダルID}"
(起動用に必要)tabindex="-1"
(キーフォーカスから外す)role="dialog"
aria-labelledby="{ラベルID}"
aria-hidden="true"
div.modal-dialog
属性
role="document"
div.modal-content
div.modal-header
div.modal-body
p
Modal body text goes here.
div.modal-footer
モーダルはボタンを使って起動できる。起動ボタンの基本構成は次の通り。
button.btn.btn-primary
: 表示設定は何でもよいが、次の属性が必須
type="button"
data-toggle="modal"
data-target="#{モーダルID}"
Launch demo modal
次のボタンを押すとページが暗転し、モーダルが上からスライドする。
data-target
には任意のCSSセレクタ書式が可能で、id
以外のセレクタ指定も可能だが、もし複数該当してもモーダルは(クエリに該当する先頭要素)ひとつしか起動しない。またモーダルのネスト(モーダル表示中に別のモーダルを起動)にも対応していない。1040
)1050
).fade
を付けると上からスライド(CSSアニメーション)して表示モーダルの高さが表示デバイスより大きい場合はスクロールバーを表示する。この時スクロール対象はモーダルに設定され、元ページはスクロールせずモーダルだけ縦スクロールする。次のデモを起動すると確認できる。
デフォルトは中央上揃えだが、本体 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);
});
data-whatever="@mdo"
show.bs.modal
を検出(⇒ Events ): 次の2つの違いに注意
show.bs.modal
起動(ボタンクリック)時: まだ表示前(こちらを使用)shown.bs.modal
モーダル表示の完了時event.relatedTarget
)から属性 data-whatever
を読み取るinput
要素に設定div.modal-dialog.modal-(xl|lg|sm)
を用いる。