アラート Alerts
利用可能で柔軟なアラートメッセージを使用して、典型的なユーザーアクションのコンテキストフィードバックメッセージを提供します。
例
アラートは、任意の長さのテキストと、オプションの閉じるボタンに使用できます。適切なスタイリングのために、8つの必須コンテキストクラスのいずれか(例: .alert-success)を使用してください。インラインでの削除には、alerts JavaScriptプラグインを使用してください。
注意! v5.3.0以降、alert-variant() Sassミックスインは非推奨です。アラートバリアントは、SassループでCSS変数がオーバーライドされるようになりました。
<div class="alert alert-primary" role="alert">
A simple primary alert—check it out!
</div>
<div class="alert alert-secondary" role="alert">
A simple secondary alert—check it out!
</div>
<div class="alert alert-success" role="alert">
A simple success alert—check it out!
</div>
<div class="alert alert-danger" role="alert">
A simple danger alert—check it out!
</div>
<div class="alert alert-warning" role="alert">
A simple warning alert—check it out!
</div>
<div class="alert alert-info" role="alert">
A simple info alert—check it out!
</div>
<div class="alert alert-light" role="alert">
A simple light alert—check it out!
</div>
<div class="alert alert-dark" role="alert">
A simple dark alert—check it out!
</div> アクセシビリティのヒント: 色を使用して意味を追加することは視覚的な表示のみを提供し、スクリーンリーダーなどの支援技術のユーザーには伝わりません。意味がコンテンツ自体から明らかであること(例えば、十分な色のコントラストを持つ表示テキスト)を確認するか、.visually-hiddenクラスで非表示にした追加テキストなどの代替手段を通じて含めてください。
ライブ例
以下のボタンをクリックしてアラートを表示し(最初はインラインスタイルで非表示)、組み込みの閉じるボタンでそれを削除(および破棄)します。
<div id="liveAlertPlaceholder"></div>
<button type="button" class="btn btn-primary" id="liveAlertBtn">Show live alert</button> ライブアラートデモをトリガーするために、次のJavaScriptを使用します:
const alertPlaceholder = document.getElementById('liveAlertPlaceholder')
const appendAlert = (message, type) => {
const wrapper = document.createElement('div')
wrapper.innerHTML = [
`<div class="alert alert-${type} alert-dismissible" role="alert">`,
` <div>${message}</div>`,
' <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>',
'</div>'
].join('')
alertPlaceholder.append(wrapper)
}
const alertTrigger = document.getElementById('liveAlertBtn')
if (alertTrigger) {
alertTrigger.addEventListener('click', () => {
appendAlert('Nice, you triggered this alert message!', 'success')
})
}
リンクの色
.alert-linkユーティリティクラスを使用して、任意のアラート内に一致する色のリンクをすばやく提供します。
<div class="alert alert-primary" role="alert">
A simple primary alert with <a href="#" class="alert-link">an example link</a>. Give it a click if you like.
</div>
<div class="alert alert-secondary" role="alert">
A simple secondary alert with <a href="#" class="alert-link">an example link</a>. Give it a click if you like.
</div>
<div class="alert alert-success" role="alert">
A simple success alert with <a href="#" class="alert-link">an example link</a>. Give it a click if you like.
</div>
<div class="alert alert-danger" role="alert">
A simple danger alert with <a href="#" class="alert-link">an example link</a>. Give it a click if you like.
</div>
<div class="alert alert-warning" role="alert">
A simple warning alert with <a href="#" class="alert-link">an example link</a>. Give it a click if you like.
</div>
<div class="alert alert-info" role="alert">
A simple info alert with <a href="#" class="alert-link">an example link</a>. Give it a click if you like.
</div>
<div class="alert alert-light" role="alert">
A simple light alert with <a href="#" class="alert-link">an example link</a>. Give it a click if you like.
</div>
<div class="alert alert-dark" role="alert">
A simple dark alert with <a href="#" class="alert-link">an example link</a>. Give it a click if you like.
</div> 追加コンテンツ
アラートには、見出し、段落、区切り線などの追加のHTML要素も含めることができます。
Well done!
Aww yeah, you successfully read this important alert message. This example text is going to run a bit longer so that you can see how spacing within an alert works with this kind of content.
Whenever you need to, be sure to use margin utilities to keep things nice and tidy.
<div class="alert alert-success" role="alert">
<h4 class="alert-heading">Well done!</h4>
<p>Aww yeah, you successfully read this important alert message. This example text is going to run a bit longer so that you can see how spacing within an alert works with this kind of content.</p>
<hr>
<p class="mb-0">Whenever you need to, be sure to use margin utilities to keep things nice and tidy.</p>
</div> アイコン
同様に、flexboxユーティリティとBootstrap Iconsを使用して、アイコン付きのアラートを作成できます。アイコンとコンテンツによっては、より多くのユーティリティまたはカスタムスタイルを追加することができます。
<div class="alert alert-primary d-flex align-items-center" role="alert">
<svg xmlns="http://www.w3.org/2000/svg" class="bi flex-shrink-0 me-2" viewBox="0 0 16 16" role="img" aria-label="Warning:">
<path d="M8.982 1.566a1.13 1.13 0 0 0-1.96 0L.165 13.233c-.457.778.091 1.767.98 1.767h13.713c.889 0 1.438-.99.98-1.767L8.982 1.566zM8 5c.535 0 .954.462.9.995l-.35 3.507a.552.552 0 0 1-1.1 0L7.1 5.995A.905.905 0 0 1 8 5zm.002 6a1 1 0 1 1 0 2 1 1 0 0 1 0-2z"/>
</svg>
<div>
An example alert with an icon
</div>
</div> アラートに複数のアイコンが必要ですか?より多くのBootstrap Iconsを使用し、次のようにローカルSVGスプライトを作成して、同じアイコンを繰り返し簡単に参照することを検討してください。
<svg xmlns="http://www.w3.org/2000/svg" class="d-none">
<symbol id="check-circle-fill" viewBox="0 0 16 16">
<path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zm-3.97-3.03a.75.75 0 0 0-1.08.022L7.477 9.417 5.384 7.323a.75.75 0 0 0-1.06 1.06L6.97 11.03a.75.75 0 0 0 1.079-.02l3.992-4.99a.75.75 0 0 0-.01-1.05z"/>
</symbol>
<symbol id="info-fill" viewBox="0 0 16 16">
<path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16zm.93-9.412-1 4.705c-.07.34.029.533.304.533.194 0 .487-.07.686-.246l-.088.416c-.287.346-.92.598-1.465.598-.703 0-1.002-.422-.808-1.319l.738-3.468c.064-.293.006-.399-.287-.47l-.451-.081.082-.381 2.29-.287zM8 5.5a1 1 0 1 1 0-2 1 1 0 0 1 0 2z"/>
</symbol>
<symbol id="exclamation-triangle-fill" viewBox="0 0 16 16">
<path d="M8.982 1.566a1.13 1.13 0 0 0-1.96 0L.165 13.233c-.457.778.091 1.767.98 1.767h13.713c.889 0 1.438-.99.98-1.767L8.982 1.566zM8 5c.535 0 .954.462.9.995l-.35 3.507a.552.552 0 0 1-1.1 0L7.1 5.995A.905.905 0 0 1 8 5zm.002 6a1 1 0 1 1 0 2 1 1 0 0 1 0-2z"/>
</symbol>
</svg>
<div class="alert alert-primary d-flex align-items-center" role="alert">
<svg class="bi flex-shrink-0 me-2" role="img" aria-label="Info:"><use xlink:href="#info-fill"/></svg>
<div>
An example alert with an icon
</div>
</div>
<div class="alert alert-success d-flex align-items-center" role="alert">
<svg class="bi flex-shrink-0 me-2" role="img" aria-label="Success:"><use xlink:href="#check-circle-fill"/></svg>
<div>
An example success alert with an icon
</div>
</div>
<div class="alert alert-warning d-flex align-items-center" role="alert">
<svg class="bi flex-shrink-0 me-2" role="img" aria-label="Warning:"><use xlink:href="#exclamation-triangle-fill"/></svg>
<div>
An example warning alert with an icon
</div>
</div>
<div class="alert alert-danger d-flex align-items-center" role="alert">
<svg class="bi flex-shrink-0 me-2" role="img" aria-label="Danger:"><use xlink:href="#exclamation-triangle-fill"/></svg>
<div>
An example danger alert with an icon
</div>
</div> 削除
alert JavaScriptプラグインを使用すると、任意のアラートをインラインで削除できます。方法は次のとおりです:
- alertプラグイン、またはコンパイルされたBootstrap JavaScriptを読み込んだことを確認してください。
- 閉じるボタンと
.alert-dismissibleクラスを追加します。これにより、アラートの右側に余分なパディングが追加され、閉じるボタンが配置されます。 - 閉じるボタンに
data-bs-dismiss="alert"属性を追加します。これにより、JavaScript機能がトリガーされます。すべてのデバイスで適切に動作するように、必ず<button>要素を使用してください。 - 削除時にアラートをアニメーション化するには、
.fadeと.showクラスを追加してください。
ライブデモでこれの動作を確認できます:
<div class="alert alert-warning alert-dismissible fade show" role="alert">
<strong>Holy guacamole!</strong> You should check in on some of those fields below.
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div> アラートが削除されると、要素はページ構造から完全に削除されます。キーボードユーザーが閉じるボタンを使用してアラートを削除すると、フォーカスが突然失われ、ブラウザーによってはページ/ドキュメントの先頭にリセットされます。このため、closed.bs.alertイベントをリッスンし、プログラムでページ内の最も適切な場所にfocus()を設定する追加のJavaScriptを含めることをお勧めします。通常フォーカスを受け取らない非インタラクティブ要素にフォーカスを移動する予定の場合は、要素にtabindex="-1"を追加してください。
CSS
変数
Added in v5.2.0Bootstrapの進化するCSS変数アプローチの一部として、アラートは強化されたリアルタイムカスタマイズのために.alertでローカルCSS変数を使用するようになりました。CSS変数の値はSassを介して設定されるため、Sassカスタマイズも引き続きサポートされています。
--#{$prefix}alert-bg: transparent;
--#{$prefix}alert-padding-x: #{$alert-padding-x};
--#{$prefix}alert-padding-y: #{$alert-padding-y};
--#{$prefix}alert-margin-bottom: #{$alert-margin-bottom};
--#{$prefix}alert-color: inherit;
--#{$prefix}alert-border-color: transparent;
--#{$prefix}alert-border: #{$alert-border-width} solid var(--#{$prefix}alert-border-color);
--#{$prefix}alert-border-radius: #{$alert-border-radius};
--#{$prefix}alert-link-color: inherit;
Sass変数
$alert-padding-y: $spacer;
$alert-padding-x: $spacer;
$alert-margin-bottom: 1rem;
$alert-border-radius: var(--#{$prefix}border-radius);
$alert-link-font-weight: $font-weight-bold;
$alert-border-width: var(--#{$prefix}border-width);
$alert-bg-scale: -80%;
$alert-border-scale: -70%;
$alert-color-scale: 40%;
$alert-dismissible-padding-r: $alert-padding-x * 3; // 3x covers width of x plus default padding on either side
Sassミックスイン
Deprecated in v5.3.0@mixin alert-variant($background, $border, $color) {
--#{$prefix}alert-color: #{$color};
--#{$prefix}alert-bg: #{$background};
--#{$prefix}alert-border-color: #{$border};
--#{$prefix}alert-link-color: #{shade-color($color, 20%)};
@if $enable-gradients {
background-image: var(--#{$prefix}gradient);
}
.alert-link {
color: var(--#{$prefix}alert-link-color);
}
}
Sassループ
CSS変数のオーバーライドを使用して修飾子クラスを生成するループ。
// Generate contextual modifier classes for colorizing the alert
@each $state in map-keys($theme-colors) {
.alert-#{$state} {
--#{$prefix}alert-color: var(--#{$prefix}#{$state}-text-emphasis);
--#{$prefix}alert-bg: var(--#{$prefix}#{$state}-bg-subtle);
--#{$prefix}alert-border-color: var(--#{$prefix}#{$state}-border-subtle);
--#{$prefix}alert-link-color: var(--#{$prefix}#{$state}-text-emphasis);
}
}
JavaScript動作
初期化
要素をアラートとして初期化します
const alertList = document.querySelectorAll('.alert')
const alerts = [...alertList].map(element => new bootstrap.Alert(element))
アラートを削除する唯一の目的のために、JS APIを介してコンポーネントを手動で初期化する必要はありません。data-bs-dismiss="alert"を使用することで、コンポーネントは自動的に初期化され、適切に削除されます。
詳細については、トリガーセクションを参照してください。
トリガー
以下のように、alert内のボタンにdata-bs-dismiss属性を指定することで閉じることができます:
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
または、以下のように、alertの外側のボタンに追加のdata-bs-targetを使用することもできます:
<button type="button" class="btn-close" data-bs-dismiss="alert" data-bs-target="#my-alert" aria-label="Close"></button> アラートを閉じると、DOMから削除されることに注意してください。
メソッド
alertコンストラクターを使用してアラートインスタンスを作成できます。例:
const bsAlert = new bootstrap.Alert('#myAlert')
これにより、アラートはdata-bs-dismiss="alert"属性を持つ子孫要素のクリックイベントをリッスンします。(data-apiの自動初期化を使用する場合は必要ありません。)
| メソッド | 説明 |
|---|---|
close | DOMから削除してアラートを閉じます。要素に.fadeと.showクラスが存在する場合、アラートは削除される前にフェードアウトします。 |
dispose | 要素のアラートを破棄します。(DOM要素に保存されたデータを削除します) |
getInstance | DOM要素に関連付けられたアラートインスタンスを取得できる静的メソッドです。例: bootstrap.Alert.getInstance(alert)。 |
getOrCreateInstance | DOM要素に関連付けられたアラートインスタンスを返すか、初期化されていない場合は新しいインスタンスを作成する静的メソッドです。次のように使用できます: bootstrap.Alert.getOrCreateInstance(element)。 |
基本的な使用法:
const alert = bootstrap.Alert.getOrCreateInstance('#myAlert')
alert.close()
イベント
Bootstrapのalertプラグインは、alert機能にフックするためのいくつかのイベントを公開します。
| イベント | 説明 |
|---|---|
close.bs.alert | closeインスタンスメソッドが呼び出されると、すぐに発火します。 |
closed.bs.alert | アラートが閉じられ、CSSトランジションが完了したときに発火します。 |
const myAlert = document.getElementById('myAlert')
myAlert.addEventListener('closed.bs.alert', event => {
// do something, for instance, explicitly move focus to the most appropriate element,
// so it doesn't get lost/reset to the start of the page
// document.getElementById('...').focus()
})