Getting started (1): スタートアップ / 利用法 / コンテンツ / ブラウザ / JavaScript
まずBootstrapの最も簡単な利用方法としてCDNを利用する方法を説明する(本チュートリアルもこの方法で作られている)。
最低限必要なHTML設定を構造で示す。⇒ 構造
<!DOCTYPE html>
html
属性
lang="{言語コード}"
head
meta
属性
charset="utf-8"
meta
属性
name="viewport"
content="width=device-width, initial-scale=1, shrink-to-fit=no"
link
属性
rel="stylesheet"
href="{Bootstrap CSS CDNのURL}"
integrity="sha384-{SHA-384文字列}"
crossorigin="anonymous"
title
{ページタイトル}
style
など(必要に応じて追加)body
script
属性
src="{jQuery CDNのURL}"
integrity="sha384-{SHA-384文字列}"
crossorigin="anonymous"
script
属性
src="{Popper.js CDNのURL}"
integrity="sha384-{SHA-384文字列}"
crossorigin="anonymous"
script
属性
src="{Bootstrap JavaScript CDNのURL}"
integrity="sha384-{SHA-384文字列}"
crossorigin="anonymous"
CDNを利用した読み込みにはそれぞれURLとSHA-384文字列が必要。具体的な設定は公式サイトの次の例文からコピペすればよい。
HTMLの先頭は必ず <!DOCTYPE html>
と書く。これは後方互換(HTML4以前との判別)用の記述で、HTML5以降の(新しい)HTML文書であることを示すのに用いられる。⇒ リファレンス 補足
DOCTYPE
を大文字にするのHTMLの元だった昔のマークアップ言語(SGML等)の名残り。今のルールでは大文字小文字は区別しないため公式ドキュメントの <!doctype html>
も正しいが、かなり珍しい。
ルート要素の html
には属性 lang="{言語コード}"
で文書中に主に用いる言語を設定する(ISO 639-1 のアルファベット2文字: 日本語は lang="ja"
)。⇒ リファレンス
lang
)
head
ブロックの始め(ファイル先頭から1024バイト以内)にHTMLファイルの文字エンコーディングを記述するが、今は必ずUTF-8を用いること。大文字小文字の区別はない("utf-8"
, "UTF-8"
, "Utf-8"
等すべてOK)。⇒ リファレンス
charset
の解説を参照)
ページの初期サイズ(幅と拡大率)を設定する。モバイル機器用ページにBootstrapを用いる場合は必ずこの設定が必要(分からなければコピペでもOK)。⇒ リファレンス 補足 iOS 9の注意
viewport
の解説がある)
補足(2018年8月現在): ビューポート設定はもともとiPhoneの独自仕様だったが、その後Android等も採用し標準化された。元のiPhone専用書式は meta
に記述する形式のみだったが、その後CSSの一部として正式に仕様化を進めることになった経緯がある。
そのため現在のWorking draft(暫定仕様)はCSS扱いだが、実際にはまだ多くのブラウザは meta
側の実装しか行っていない(CSSへの対応状況は caniuse - @viewport や MDN - @viewport を参照)。
また暫定仕様では元のiPhone仕様との整合性確保のため、content
属性の値とCSS(@viewport
)の間の変換規則(英文/日本語)がある。特に文の区切りにCSSの ;
ではなく ,
を用いる点に注意。
shrink-to-fit=no
はiPhone iOS 9(Safari 9)専用の設定。このバージョンのSafariはこれがないとページを自動縮小して全体表示する機能が優先され initial-scale=1
が無効になる(勝手に縮小する)。9で追加されたが10で廃止されたため上記リファレンス仕様に書かれていない(What's New in Safari - 9.0 参照)。なお他のブラウザは単に無視する(付けておいても無害)。
CDNを利用する場合は外部読み込みタグ(CSSは link
, JavaScriptは script
)に属性 integrity="sha384-{SHA-384文字列}"
と crossorigin="anonymous"
を追加する。⇒ リファレンス 補足
integrity
について
crossorigin
について
通常は公式ドキュメントの Starter template の設定をそのまま使えばよい。⇒ 補足
BootstrapはCSSだけで実現できない機能をJavaScriptで実装している。これはjQueryプラグイン形式で実装されていることから伝統的に「(Bootstrapの) JavaScriptプラグイン」と呼ばれておりjQueryに全面依存している。また現バージョン(V4以降)はPopper.jsにも依存している。そのためこの2つを事前に読み込む必要がある。
通常は次の順番で読み込むが、jQueryとPopper.jsの間に依存性はないので1と2は逆でもよい。CDN用の全設定は Starter template を参照(内容が分からなくてもこの通り記述すれば使える)。
Bootstrapの様々な入手/利用方法(概要のみ)。
Bootstrapのファイル内容について。
(.map
ファイルは除外)
bootstrap/
ファイル
css/
ファイル
bootstrap(.min).css
- フルバージョンbootstrap-grid-(.min).css
- グリッドとFlexboxユーティリティのみbootstrap-reboot-(.min).css
- Reboot (リセットCSS)のみjs/
ファイル
bootstrap.bundle(.min).js
- Popper.jsとBootstrap JSの合体版(事前にjQuery読み込みが必要)bootstrap(.min).js
- Bootstrap JSのみ(事前にjQueryとPopper.jsの読み込みが必要)(主要部分のディレクトリ構造のみ)
bootstrap-4.X.X/
ファイル
assets/
- ドキュメント用ファイル(CSS, JavaScript, 画像)build/
- ビルド用スクリプトコードと設定ファイルdist/
- コンパイル済みファイル(配布版(コンパイル済み)Bootstrapと同じ)docs/
- ドキュメント用ソースファイル(Markdown)js/
JavaScriptファイル ファイル モジュール形式について
dist/
- モジュールファイル(UMD形式 - CommonJSとAMDに対応)src/
- モジュールファイル(ES2015形式)tests/
- テスト用ファイルnuget/
- NuGet (.NET用パッケージマネージャ)用ファイルscss/
Sass(.scss)ソースファイル一式package.json
現在のJavaScriptでは中規模以上の開発にモジュール化の手法が用いられ、現行の主流モジュール仕様として次の3種類がある。
BootstrapのJavaScriptモジュールはES2015形式で、他のES2015モジュール(例えば Popper.js のバンドル前モジュールソース)とそのまま組み合わせて利用できる。
またバージョン4.1.3からCommonJSとAMDにも対応するようになった。bootstrap-4.X.X/js/dist/
のファイルは元のES2015形式モジュールを rollup.js でUMD(Universal Module Definition)形式に変換したもの。UMDはCommonJSとAMDの両方に対応するファイル形式で、rollup.jsではさらにブラウザから <script>
で直接読み込むことにも対応している。
また配布版BootstrapのJavaScriptファイルはrollup.jsでES2015形式モジュールソースをバンドルしたもの。Popper.jsもES2015モジュールなので両者のバンドル版もある。
Bootstrap 4は現行の主要ブラウザに対応しており、対応ブラウザの条件を .browserslistrc
(v4.1.2までは package.json
の中)に browserslist 形式で記述している(書式は Best Practices と Full List を参照)。 ⇒ 表示
# https://github.com/browserslist/browserslist#readme
>= 1%
last 1 major version
not dead
Chrome >= 45
Firefox >= 38
Edge >= 12
Explorer >= 10
iOS >= 9
Safari >= 9
Android >= 4.4
Opera >= 30
この情報は Autoprefixer を用いてCSSにベンダープリフィクスを付加する処理に用いられる。なおAutoprefixerはBootstrap CSSをカスタマイズする際の必須ツール(V3.2以降で導入)。詳しくはCSSのカスタマイズを参照。
具体的なサポート状況はオフィシャルページを参照すること。
BootstrapはCSSだけでは実現できない動的処理にJavaScriptを用いている(jQueryプラグインとして書かれているため「JavaScriptプラグイン」と呼ばれている)。基本的な利用(設定)方法はJavaScript読み込みを参照。
また(バンドル前の)ソースコードはES2016(ES6)形式で、Webpackなどの各種モジュールバンドル対応ツールからモジュール単位で利用することもできる。詳しくはBootstrapソースコードを参照(モジュール形式の詳細は JavaScriptモジュール形式について ボタンで表示)。
BootstrapのJavaScriptプラグインは読み込み時に自動的に初期設定を実行する(通常は自分でコードを書かなくてよい)。ただし次のコンポーネントは自分で簡単な初期化用JavaScriptコードを記述する必要がある(リンク先にコード例あり)。
動作の設定には カスタムデータ属性 data-*
が用いられる。HTMLタグ中に data-
で始まるBootstrap用の属性を記述し、JavaScriptの初期化時にこの設定が読み込まれ処理される。
BootstrapのJavaScript APIはjQueryプラグイン仕様に基づいており、jQueryで対象要素を抽出してメソッド呼び出しすることにより機能する。以下はモーダルのAPI呼び出し例。使用できるオプション一覧は公式ドキュメントの Options、メソッドに渡すコマンド(文字列)一覧は Methods を参照。
// 例1: デフォルト設定でインターフェースを生成(自動的に行われるため通常不要)
$('#my-modal').modal();
// 例2: オプションを設定(属性を用いてdata-keyboard="false"と設定するのと同様)
// (公式ドキュメントのoptionsを参照)
$('#my-modal').modal({ keyboard: false });
// 例3: コマンドを実行
// (公式ドキュメントのmethodsを参照)
$('#my-modal').modal('show');
Bootstrap JavaScript APIでは各コンポーネントの特定タイミングにカスタムイベントが設定してある。イベント名はjQueryの名前空間を用いてドット区切りで次のように表現されている。
{イベント}.bs.{コンポーネント}
{イベント}
- コンポーネント別のイベント名 (例: show
)bs
- Bootstrapのカスタムイベントであることを表す{コンポーネント}
- jQueryにプラグイン登録しているコンポーネント名 (例: modal
)次もモーダルへのイベント設定例。イベント一覧は公式ドキュメントの Events を参照すること。
// イベント"show.bs.modal"はモーダル表示開始時に発生する
$('#my-modal').on('show.bs.modal', function(event) {
// まだモーダルは表示していないので
// ここでモーダルに表示する内容を設定できる
});
より詳しい実例は本チュートリアルの 起動時のコンテント更新 を参照(実際に動作しているコード例あり)。
先に示した通り、BootstrapのJavaScript APIはjQueryプラグインとして実装されており、具体的には $.fn.button
のように小文字のコンポーネント名でそのまま登録されている(他に alert
, carousel
, collapse
, etc.)。他のjQueryプラグインと名前が衝突する場合に対応するため .noConflict()
を用意している。
// Bootstrapが設定する前の$.fn.buttonに戻してから、
// Bootstrapのbuttonプラグインを返す
var bootstrapButton = $.fn.button.noConflict();
// bootstrapButtonという(衝突しない)名前で再登録
$.fn.bootstrapBtn = bootstrapButton;
各プラグインのデフォルト設定は $.fn.{プラグイン名}.Constructor.Default
オブジェクトに設定されており、必要に応じて次のように変更できる。
// 例: モーダルのキーボード操作のデフォルト動作をOFFにする
$.fn.modal.Constructor.Default.keyboard = false;