基礎知識
プログレスコンポーネントは、2つのHTML要素、幅を設定するためのCSS、およびいくつかの属性で構築されています。HTML5の<progress>
要素を使用しないため、プログレスバーを積み重ねてアニメーション化できます、その上にテキストラベルを配置します。
- プログレスバーの最大値を示すラッパーとして
.progress
を使用します。 - また、
.progress
ラッパーにはrole="progress"
とaria
属性が必要で、アクセス可能な名前(aria-label
,aria-labelledby
などの属性を使用)を指定する必要があります。 - 内部の
.progress-bar
は純粋に視覚的なバーとラベルのために使用します。 -.progress-bar
の幅を設定するには、インラインスタイル、ユーティリティクラス、またはカスタムCSSが必要です。 - 複数のプログレスバーを作成するために、特別な
.progress-stacked
クラスを提供します。
これらすべてを組み合わせると、次の例のようになります。
<div class="progress" role="progressbar" aria-label="Basic example" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100">
<div class="progress-bar" style="width: 0%"></div>
</div>
<div class="progress" role="progressbar" aria-label="Basic example" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100">
<div class="progress-bar" style="width: 25%"></div>
</div>
<div class="progress" role="progressbar" aria-label="Basic example" aria-valuenow="50" aria-valuemin="0" aria-valuemax="100">
<div class="progress-bar" style="width: 50%"></div>
</div>
<div class="progress" role="progressbar" aria-label="Basic example" aria-valuenow="75" aria-valuemin="0" aria-valuemax="100">
<div class="progress-bar" style="width: 75%"></div>
</div>
<div class="progress" role="progressbar" aria-label="Basic example" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100">
<div class="progress-bar" style="width: 100%"></div>
</div>
バーのサイズ調整
幅
Bootstrapは、一握りの幅を設定するためのユーティリティを提供します。あなたのニーズに応じて、これらは.progress-bar
の幅を素早く設定するのに役立つかもしれません。
<div class="progress" role="progressbar" aria-label="Basic example" aria-valuenow="75" aria-valuemin="0" aria-valuemax="100">
<div class="progress-bar w-75"></div>
</div>
高さ
height
の値は.progress
コンテナにしか設定されていないので、その値を変更すれば、内部の.progress-bar
もそれに合わせて自動的にサイズ変更されます。
<div class="progress" role="progressbar" aria-label="Example 1px high" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100" style="height: 1px">
<div class="progress-bar" style="width: 25%"></div>
</div>
<div class="progress" role="progressbar" aria-label="Example 20px high" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100" style="height: 20px">
<div class="progress-bar" style="width: 25%"></div>
</div>
ラベル
.progress-bar
内にテキストを配置して、プログレスバーにラベルを追加します。
<div class="progress" role="progressbar" aria-label="Example with label" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100">
<div class="progress-bar" style="width: 25%">25%</div>
</div>
デフォルトでは、.progress-bar
内のコンテンツはoverflow: hidden
で制御され、バーからはみ出ないようになっています。プログレスバーの長さがラベルの長さより短い場合、コンテンツは制限され、読めなくなる可能性があります。この動作を変更するには、オーバーフローユーティリティから.overflow-visible
を使用することができますが、テキストが読みやすくなるように、明示的にテキストカラーも定義してください。しかし、現在のところ、この方法は カラーモード を考慮していないことに注意してください。
<div class="progress" role="progressbar" aria-label="Example with label" aria-valuenow="10" aria-valuemin="0" aria-valuemax="100">
<div class="progress-bar overflow-visible text-dark" style="width: 10%">Long label text for the progress bar, set to a dark color</div>
</div>
背景
バックグラウンドユーティリティクラスを使用して、個々のプログレスバーの外観を変更します。
<div class="progress" role="progressbar" aria-label="Success example" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100">
<div class="progress-bar bg-success" style="width: 25%"></div>
</div>
<div class="progress" role="progressbar" aria-label="Info example" aria-valuenow="50" aria-valuemin="0" aria-valuemax="100">
<div class="progress-bar bg-info" style="width: 50%"></div>
</div>
<div class="progress" role="progressbar" aria-label="Warning example" aria-valuenow="75" aria-valuemin="0" aria-valuemax="100">
<div class="progress-bar bg-warning" style="width: 75%"></div>
</div>
<div class="progress" role="progressbar" aria-label="Danger example" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100">
<div class="progress-bar bg-danger" style="width: 100%"></div>
</div>
支援技術に意味を伝える
色を使用して意味を付加することは、視覚的な表示を提供するだけであり、スクリーンリーダーなどの支援技術の利用者には伝わりません。色で示される情報は、コンテンツ自体(例:可視テキスト)から明らかですが、.visually-hidden
クラスで隠された追加テキストなど、別の手段で含まれていることを確認してください。
カスタム背景色のプログレスバーにラベルを追加する場合、適切なテキストカラーも設定して、ラベルが読みやすく、十分なコントラストが保たれるようにしてください。
<div class="progress" role="progressbar" aria-label="Success example" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100">
<div class="progress-bar bg-success" style="width: 25%">25%</div>
</div>
<div class="progress" role="progressbar" aria-label="Info example" aria-valuenow="50" aria-valuemin="0" aria-valuemax="100">
<div class="progress-bar bg-info text-dark" style="width: 50%">50%</div>
</div>
<div class="progress" role="progressbar" aria-label="Warning example" aria-valuenow="75" aria-valuemin="0" aria-valuemax="100">
<div class="progress-bar bg-warning text-dark" style="width: 75%">75%</div>
</div>
<div class="progress" role="progressbar" aria-label="Danger example" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100">
<div class="progress-bar bg-danger" style="width: 100%">100%</div>
</div>
あるいは、新しい色と背景ヘルパークラスを組み合わせて使うこともできます。
<div class="progress" role="progressbar" aria-label="Warning example" aria-valuenow="75" aria-valuemin="0" aria-valuemax="100">
<div class="progress-bar text-bg-warning" style="width: 75%">75%</div>
</div>
複数のバー
コンテナ内に複数のプログレスコンポーネントを.progress-stacked
で含めると、1つのスタック型プログレスバーを作成することができます。この場合、プログレスバーの視覚的な幅を設定するスタイリングは.progress-bar
要素ではなく、.progress
要素に適用する必要があることに注意してください。
<div class="progress-stacked">
<div class="progress" role="progressbar" aria-label="Segment one" aria-valuenow="15" aria-valuemin="0" aria-valuemax="100" style="width: 15%">
<div class="progress-bar"></div>
</div>
<div class="progress" role="progressbar" aria-label="Segment two" aria-valuenow="30" aria-valuemin="0" aria-valuemax="100" style="width: 30%">
<div class="progress-bar bg-success"></div>
</div>
<div class="progress" role="progressbar" aria-label="Segment three" aria-valuenow="20" aria-valuemin="0" aria-valuemax="100" style="width: 20%">
<div class="progress-bar bg-info"></div>
</div>
</div>
ストライプ
プログレスバーの背景色の上にCSSグラデーションでストライプを適用するには、任意の.progress-bar
に.progress-bar-striped
を追加します。
<div class="progress" role="progressbar" aria-label="Default striped example" aria-valuenow="10" aria-valuemin="0" aria-valuemax="100">
<div class="progress-bar progress-bar-striped" style="width: 10%"></div>
</div>
<div class="progress" role="progressbar" aria-label="Success striped example" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100">
<div class="progress-bar progress-bar-striped bg-success" style="width: 25%"></div>
</div>
<div class="progress" role="progressbar" aria-label="Info striped example" aria-valuenow="50" aria-valuemin="0" aria-valuemax="100">
<div class="progress-bar progress-bar-striped bg-info" style="width: 50%"></div>
</div>
<div class="progress" role="progressbar" aria-label="Warning striped example" aria-valuenow="75" aria-valuemin="0" aria-valuemax="100">
<div class="progress-bar progress-bar-striped bg-warning" style="width: 75%"></div>
</div>
<div class="progress" role="progressbar" aria-label="Danger striped example" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100">
<div class="progress-bar progress-bar-striped bg-danger" style="width: 100%"></div>
</div>
ストライプのアニメーション
縞模様のグラデーションもアニメーション化できます。CSS3アニメーションでストライプを右から左にアニメーション化するには、.progress-bar-animated
を.progress-bar
に追加します。
<div class="progress" role="progressbar" aria-label="Animated striped example" aria-valuenow="75" aria-valuemin="0" aria-valuemax="100">
<div class="progress-bar progress-bar-striped progress-bar-animated" style="width: 75%"></div>
</div>
CSS
変数
Added in v5.2.0Bootstrapの進化するCSS変数アプローチの一部として、プログレス・バーは、リアルタイムのカスタマイズを強化するために、.progress
のローカルCSS変数を使用するようになりました。CSS変数の値はSass経由で設定されるため、Sassによるカスタマイズも引き続きサポートされます。
--#{$prefix}progress-height: #{$progress-height};
@include rfs($progress-font-size, --#{$prefix}progress-font-size);
--#{$prefix}progress-bg: #{$progress-bg};
--#{$prefix}progress-border-radius: #{$progress-border-radius};
--#{$prefix}progress-box-shadow: #{$progress-box-shadow};
--#{$prefix}progress-bar-color: #{$progress-bar-color};
--#{$prefix}progress-bar-bg: #{$progress-bar-bg};
--#{$prefix}progress-bar-transition: #{$progress-bar-transition};
Sass変数
$progress-height: 1rem;
$progress-font-size: $font-size-base * .75;
$progress-bg: var(--#{$prefix}secondary-bg);
$progress-border-radius: var(--#{$prefix}border-radius);
$progress-box-shadow: var(--#{$prefix}box-shadow-inset);
$progress-bar-color: $white;
$progress-bar-bg: $primary;
$progress-bar-animation-timing: 1s linear infinite;
$progress-bar-transition: width .6s ease;
キーフレーム
.progress-bar-animated
のCSSアニメーションを作成するために使用します。scss/_progress-bar.scss
に含まれています。
@if $enable-transitions {
@keyframes progress-bar-stripes {
0% { background-position-x: $progress-height; }
}
}