Bootstrap4.xの使い方をBootstrap3.xからの変更箇所を交えて解説しています。
スピナー(Spinners) v4.2.1新設
コンポーネントまたはページのロード状態を示すBootstrapのスピナーは、HTML、CSS、JavaScriptなしで完全に構築されている。
概要(About)
Bootstrapの「スピナー」を使用して、プロジェクトの読み込み状態が表示可能。HTMLとCSSだけで構築されているため、JavaScriptを作成する必要はない。ただし、可視性を切り替えるには任意のJavaScriptが必要。外観、配置、サイズは、Bootstrapの各ユーティリティクラスで簡単にカスタマイズ可能。
アクセシビリティのために、各ローダーには role="status"
と <span class="sr-only">Loading...</span>
を含めること。
prefers-reduced-motion
メディアクエリに依存。詳細はアクセシビリティのモーションを小さくするに記載。
回転型スピナー(Border spinner)
軽量なローディングインジケーターとして、回転型スピナーを使用。
見本
設定例
<div class="spinner-border" role="status">
<span class="sr-only">Loading...</span>
</div>
【設定】
div.spinner-border
>span.sr-only
> Loading...(ロード中を示す)
【アクセシビリティの設定】
.spinner-border
にはrole="status"
属性(支援技術にある種の更新された状態を伝える)を入れる- ロード中を示すテキストはユーザー補助用に
span.sr-only
で囲むこと
カラー(Colors)
回転型スピナーは、border-color
に currentColor
を使用。つまり、テキストカラーユーティリティで色のカスタマイズが可能。下の見本は青色の回転型スピナー。
見本
設定例
<div class="spinner-border text-primary" role="status">
<span class="sr-only">Loading...</span>
</div>
デフォルトのスピナーでは、テキストカラーユーティリティを使用すること。
色の種類
.text-primary
.text-secondary
.text-success
.text-danger
.text-warning
.text-info
.text-light
※色が見やすいように背景色と空白をつけています
.text-dark
.text-white
※色が見やすいように背景色と空白をつけています
.text-body
.text-muted
.text-black-50
.text-white-50
※色が見やすいように背景色と空白をつけています
【設定】
.spinner-border
に.text-{themecolor}
(定義済の文字色)を追加- カスタムCSSで文字色を設定しても可
border-color
ユーティリティを使用しないのか? それぞれの回転型スピナーは、少なくとも一辺のボーダーを transparent
(透過)に指定しているので、.border-{themecolor}
ユーティリティではそれを上書きしてしまうから。
放射型スピナー(Growing spinner)
回転型スピナーが気に入らない場合は、放射型スピナーに切り替え。技術的には回転しないが、繰り返し放射する。
見本
設定例
<div class="spinner-grow" role="status">
<span class="sr-only">Loading...</span>
</div>
【設定】
div.spinner-grow
>span.sr-only
> Loading...(ロード中を示す)
【アクセシビリティの設定】
.spinner-grow
にはrole="status"
属性(支援技術にある種の更新された状態を伝える)を入れる- ロード中を示すテキストはユーザー補助用に
span.sr-only
で囲むこと
このスピナーも currentColor
で構築されているので、テキストカラーユーティリティでその外観を簡単に変更。ここでは、サポートされているバリエーションとともに青色で表示。
色の種類
.text-primary
.text-secondary
.text-success
.text-danger
.text-warning
.text-info
.text-light
※色が見やすいように背景色と空白をつけています
.text-dark
.text-white
※色が見やすいように背景色と空白をつけています
.text-body
.text-muted
.text-black-50
.text-white-50
※色が見やすいように背景色と空白をつけています
設定例
<div class="spinner-grow text-primary" role="status">
<span class="sr-only">Loading...</span>
</div>
【設定】
.spinner-grow
に.text-{themecolor}
(定義済の文字色)を追加- カスタムCSSで文字色を設定しても可
配置(Alignment)
Bootstrapのスピナーは、rem
, currentColor
, display:inline-flex
で構築されている。これにより簡単にサイズや色の変更、素早い調整が可能。
空白(Margin)
空白ユーティリティ(.m-5
など)を使用すると、簡単にスペースを空けられる。
見本
設定例
<div class="spinner-border m-5" role="status">
<span class="sr-only">Loading...</span>
</div>
【設定】
.spinner-{border|grow}
に空白ユーティリティを追加して空白を調整
位置(Placement)
Flexboxユーティリティ、floatユーティリティ、text-alignユーティリティを使用して、スピナーを必要な場所に正確に配置可能。
1. Flexユーティリティを使用(Flex)
見本(中央に配置)
設定例
<div class="d-flex justify-content-center">
<div class="spinner-border" role="status">
<span class="sr-only">Loading...</span>
</div>
</div>
見本(ローディングと合わせて左右に配置)
設定例
<div class="d-flex align-items-center">
<strong>Loading...</strong>
<div class="spinner-border ml-auto" role="status" aria-hidden="true"></div>
</div>
【設定】
.spinner-{border|grow}
をFlexユーティリティで囲んで位置を調整
2. 横の配置ユーティリティを使用(Floats)
見本(横の配置ユーティリティに追加)
設定例
<div class="clearfix">
<div class="spinner-border float-right" role="status">
<span class="sr-only">Loading...</span>
</div>
</div>
見本(横の配置ユーティリティで囲む)
設定例
<div class="float-right">
<div class="spinner-border" role="status">
<span class="sr-only">Loading...</span>
</div>
</div>
【設定】
.spinner-{border|grow}
に横の配置ユーティリティを追加するか、.spinner-{border|grow}
を横の配置ユーティリティで囲んで位置を調整
3. 文字の配置ユーティリティを使用(Text align)
見本
設定例
<div class="text-center">
<div class="spinner-border" role="status">
<span class="sr-only">Loading...</span>
</div>
</div>
【設定】
.spinner-{border|grow}
を文字の左寄せ/右寄せ/中央揃えユーティリティで囲んで位置を調整
【注意】
.spinner-{border|grow}
に文字の左寄せ/右寄せ/中央揃えユーティリティを追加しても機能しない
サイズ(Size)
.spinner-border-sm
と .spinner-grow-sm
を追加すると、他のコンポーネント内ですばやく使用可能な小さめのスピナーが作成される。
1. .spinner-{border|grow}-sm
を使用
見本
設定例
<div class="spinner-border spinner-border-sm" role="status">
<span class="sr-only">Loading...</span>
</div>
<div class="spinner-grow spinner-grow-sm" role="status">
<span class="sr-only">Loading...</span>
</div>
2. カスタムCSSを使用
または、カスタムCSSまたはインラインスタイルを使用して、必要に応じて大きさを変更。
見本
設定例
<div class="spinner-border" style="width: 3rem; height: 3rem;" role="status">
<span class="sr-only">Loading...</span>
</div>
<div class="spinner-grow" style="width: 3rem; height: 3rem;" role="status">
<span class="sr-only">Loading...</span>
</div>
【設定】
- 小さめ:
.spinner-{border|grow}
に.spinner-{border|grow}-sm
を追加({border|grow}
の部分は統一すること) - カスタムCSS(
rem
単位)で大きさを設定しても可
ボタンに設定(Buttons)
ボタン内のスピナーを使用して、アクションが現在処理中または実行中であることを表示。また、スピナー要素からテキストを取り替えて、必要に応じてボタンテキストを使用することも可能。
1. 回転型スピナーの場合
見本
設定例
<button class="btn btn-primary" type="button" disabled>
<span class="spinner-border spinner-border-sm" role="status" aria-hidden="true"></span>
<span class="sr-only">Loading...</span>
</button>
<button class="btn btn-primary" type="button" disabled>
<span class="spinner-border spinner-border-sm" role="status" aria-hidden="true"></span>
Loading...
</button>
<!-- 小さめのボタンの場合 -->
<button class="btn btn-primary btn-sm" type="button" disabled>
<span class="spinner-border spinner-border-sm" role="status" aria-hidden="true"></span>
Loading...
</button>
<!-- 大きめのボタンの場合 -->
<button class="btn btn-primary btn-lg" type="button" disabled>
<span class="spinner-border" role="status" aria-hidden="true"></span>
Loading...
</button>
2. 放射型スピナーの場合
見本
設定例
<button class="btn btn-primary" type="button" disabled>
<span class="spinner-grow spinner-grow-sm" role="status" aria-hidden="true"></span>
<span class="sr-only">Loading...</span>
</button>
<button class="btn btn-primary" type="button" disabled>
<span class="spinner-grow spinner-grow-sm" role="status" aria-hidden="true"></span>
Loading...
</button>
<!-- 小さめのボタンの場合 -->
<button class="btn btn-primary btn-sm" type="button" disabled>
<span class="spinner-grow spinner-grow-sm" role="status" aria-hidden="true"></span>
Loading...
</button>
<!-- 大きめのボタンの場合 -->
<button class="btn btn-primary btn-lg" type="button" disabled>
<span class="spinner-grow" role="status" aria-hidden="true"></span>
Loading...
</button>
【設定】
- デフォルトのボタン:
.btn.btn-(outline-){themecolor}[disabled]
>span.spinner-{border|grow}.spinner-{border|grow}-sm[role="status"]
+ Loading... - 小さめのボタン:
.btn.btn-(outline-){themecolor}.btn-sm[disabled]
>span.spinner-*.spinner-{border|grow}-sm[role="status"]
+ Loading... - 大きめボタン:
.btn.btn-(outline-){themecolor}.btn-lg[disabled]
>span.spinner-*[role="status"]
+ Loading... - ボタンの文字をスピナーのみにする場合は、
span.spinner-{border|grow}(.spinner-{border|grow}-sm)[role="status"]
+ Loading... をspan.spinner-{border|grow}(.spinner-{border|grow}-sm)[role="status"]
>span.sr-only
> Loading... にする
【注意】
- ロード中のボタンの状態は無効化(
.btn[disabled]
)にする