例
任意の長さのアラートを表示できます。オプションで閉じるボタンがあります。適切なスタイルを設定するには、8つのrequiredコンテキストクラスのいずれかを使用します(例:.alert-success
)
インラインで閉じる場合はアラートのJavaScriptプラグイン使用します。
alert-variant()
Sass mixinは非推奨となっています。アラートバリアントは、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>
アイコン
同様に、フレックスユーティリティとBootstrapアイコンを使用して、アイコン付きのアラートを作成できます。アイコンとコンテンツによっては、ユーティリティやカスタムスタイルを追加することもできます。
<div class="alert alert-primary d-flex align-items-center" role="alert">
<svg xmlns="http://www.w3.org/2000/svg" class="bi bi-exclamation-triangle-fill 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アイコンを使用して、同じアイコンを繰り返し簡単に参照できるように、ローカルのSVGスプライトを作成することを検討してください。
<svg xmlns="http://www.w3.org/2000/svg" style="display: 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>
アラートを閉じる
アラートのJavaScriptプラグインを使用すると、アラートインラインを消すことができます。
- アラートのJavaScriptプラグインを読み込むか,BootstrapJavaScriptを読み込んでください。
- クローズボタンに
.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 mixins
Deprecated in v5.3.0theme-colors
と組み合わせて使用し、アラートのコンテキスト修飾クラスを作成します。
@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ループ
alert-variant()
mixinを使って修飾クラスを生成するループです。
// 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))
アラートを解除するためだけに、JavaScriptのAPIを介してコンポーネントを手動で初期化する必要はありません。data-bs-dismiss="alert"
を使用することで、コンポーネントは自動的に初期化され、適切に解除されます。
詳しくは、トリガーのセクションを参照してください。
トリガー
以下に示すようにdata-bs-dismiss
属性を使って、alert内のボタンで終了させることができます:
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
または、以下のようにdata-bs-target
を使ってalertの外側のボタンに追加します:
<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の自動初期化を使用している場合は必要ありません)。
Method | Description |
---|---|
close |
アラートをDOMから削除して閉じます。要素に.fade と.show クラスが存在する場合、アラートは削除される前にフェードアウトします。 |
dispose |
要素のアラートを破棄します。(DOM要素の保存データを削除する) |
getInstance |
DOM要素に関連するアラートインスタンスを取得することができる静的メソッドです。例:bootstrap.Alert.getInstance(alert) |
getOrCreateInstance |
DOM要素に関連付けられたアラートインスタンスを返すか、初期化されていない場合は新しいアラートインスタンスを作成する静的メソッドです。次のように使うことができます:bootstrap.Alert.getOrCreateInstance(要素) . |
一般的な使用方法:
const alert = bootstrap.Alert.getOrCreateInstance('#myAlert')
alert.close()
イベント
Bootstrapのalertプラグインは、アラート機能にフックするためのいくつかのイベントがあります。
Event | Description |
---|---|
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()
})