Skip to main content Skip to docs navigation
View on GitHub

Alerts警告

Provide contextual feedback messages for typical user actions with the handful of available and flexible alert messages.为典型用户操作提供上下文反馈消息,并提供少量可用且灵活的警报消息。

Examples例子

Alerts are available for any length of text, as well as an optional close button. 警报可用于任何长度的文本,以及可选的关闭按钮。For proper styling, use one of the eight required contextual classes (e.g., .alert-success). 要获得正确的样式,请使用八个必需的上下文类之一(例如,.alert-success)。For inline dismissal, use the alerts JavaScript plugin.对于内联解雇,请使用alerts JavaScript插件

<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>
Conveying meaning to assistive technologies向辅助技术传达意义

Using color to add meaning only provides a visual indication, which will not be conveyed to users of assistive technologies – such as screen readers. 使用颜色来增加意义只能提供视觉指示,而不会传达给屏幕阅读器等辅助技术的用户。Ensure that information denoted by the color is either obvious from the content itself (e.g. the visible text), or is included through alternative means, such as additional text hidden with the .visually-hidden class.确保由颜色表示的信息在内容本身(例如可见文本)中是明显的,或者通过其他方式包括,例如使用.visually-hidden类隐藏的其他文本。

Live example实例

Click the button below to show an alert (hidden with inline styles to start), then dismiss (and destroy) it with the built-in close button.单击下面的按钮以显示警报(隐藏,以内联样式开始),然后使用内置的关闭按钮将其关闭(并销毁)。

<button type="button" class="btn btn-primary" id="liveAlertBtn">Show live alert</button>
<div class="alert alert-primary alert-dismissible" role="alert" id="liveAlert">
<strong>Nice!</strong> You've triggered this alert.
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div>

We use the following JavaScript to trigger our live alert demo:我们使用以下JavaScript触发实时警报演示:

var alertPlaceholder = document.getElementById('liveAlertPlaceholder')
var alertTrigger = document.getElementById('liveAlertBtn')
function alert(message, type) {
var wrapper = document.createElement('div')
wrapper.innerHTML = '<div class="alert alert-' + type + ' alert-dismissible" role="alert">' + message + '<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button></div>'
alertPlaceholder.append(wrapper)
}
if (alertTrigger) {
alertTrigger.addEventListener('click', function () {
alert('Nice, you triggered this alert message!', 'success')
})
}

Use the .alert-link utility class to quickly provide matching colored links within any alert.使用.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>

Additional content附加内容

Alerts can also contain additional HTML elements like headings, paragraphs and dividers.警报还可以包含其他HTML元素,如标题、段落和分隔符。

<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>

Icons图标

Similarly, you can use flexbox utilities and Bootstrap Icons to create alerts with icons. 类似地,您可以使用flexbox实用程序Bootstrap图标创建带有图标的警报。Depending on your icons and content, you may want to add more utilities or custom styles.根据图标和内容,您可能需要添加更多实用程序或自定义样式。

<div class="alert alert-primary d-flex align-items-center" role="alert">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="currentColor" 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>

Need more than one icon for your alerts? 您的警报需要多个图标吗?Consider using more Bootstrap Icons and making a local SVG sprite like so to easily reference the same icons repeatedly.考虑使用更多的Bootstrap图标并制作一个本地SVG精灵,这样可以方便地重复引用相同的图标。

<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
<symbol id="check-circle-fill" fill="currentColor" 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" fill="currentColor" 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" fill="currentColor" 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" width="24" height="24" 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" width="24" height="24" 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" width="24" height="24" 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" width="24" height="24" role="img" aria-label="Danger:"><use xlink:href="#exclamation-triangle-fill"/></svg>
<div>
An example danger alert with an icon
</div>
</div>

Dismissing撤除

Using the alert JavaScript plugin, it’s possible to dismiss any alert inline. Here’s how:使用alert JavaScript插件,可以消除任何内嵌警报。以下是方法:

  • Be sure you’ve loaded the alert plugin, or the compiled Bootstrap JavaScript.确保已加载警报插件或已编译的BootstrapJavaScript。
  • Add a close button and the .alert-dismissible class, which adds extra padding to the right of the alert and positions the close button.添加一个close按钮.alert-dismissible类,该类在警报右侧添加额外的填充,并定位关闭按钮。
  • On the close button, add the data-bs-dismiss="alert" attribute, which triggers the JavaScript functionality. 在关闭按钮上,添加数据data-bs-dismiss="alert"属性,该属性触发JavaScript功能。Be sure to use the <button> element with it for proper behavior across all devices.请务必使用<button>元素,以便在所有设备上正常运行。
  • To animate alerts when dismissing them, be sure to add the .fade and .show classes.要在解除警报时设置警报动画,请确保添加.fade.show类。

You can see this in action with a live demo:您可以在现场演示中看到这一点:

<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>
When an alert is dismissed, the element is completely removed from the page structure. 当解除警报时,该元素将从页面结构中完全删除。If a keyboard user dismisses the alert using the close button, their focus will suddenly be lost and, depending on the browser, reset to the start of the page/document. 如果键盘用户使用“关闭”按钮解除警报,他们的焦点将突然丢失,并根据浏览器的不同,重置为页面/文档的开头。For this reason, we recommend including additional JavaScript that listens for the closed.bs.alert event and programmatically sets focus() to the most appropriate location in the page. 出于这个原因,我们建议包含侦听closed.bs.alert事件并以编程方式将focus()设置为页面中最合适位置的额外JavaScript。If you’re planning to move focus to a non-interactive element that normally does not receive focus, make sure to add tabindex="-1" to the element.如果您计划将焦点移动到通常不接收焦点的非交互元素,请确保给元素添加tabindex="-1"

Sass

Variables变量

$alert-padding-y:               $spacer;
$alert-padding-x:               $spacer;
$alert-margin-bottom:           1rem;
$alert-border-radius:           $border-radius;
$alert-link-font-weight:        $font-weight-bold;
$alert-border-width:            $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

Variant mixin变异杂合体

Used in combination with $theme-colors to create contextual modifier classes for our alerts.$theme-colors结合使用,为我们的警报创建上下文修改器类。

@mixin alert-variant($background, $border, $color) {
color: $color;
@include gradient-bg($background);
border-color: $border;
.alert-link {
color: shade-color($color, 20%);
}
}

Loop

Loop that generates the modifier classes with the alert-variant() mixin.使用alert-variant()mixin生成修改器类的循环。

// Generate contextual modifier classes for colorizing the alert.

@each $state, $value in $theme-colors {
$alert-background: shift-color($value, $alert-bg-scale);
$alert-border: shift-color($value, $alert-border-scale);
$alert-color: shift-color($value, $alert-color-scale);
@if (contrast-ratio($alert-background, $alert-color) < $min-contrast-ratio) {
$alert-color: mix($value, color-contrast($alert-background), abs($alert-color-scale));
}
.alert-#{$state} {
@include alert-variant($alert-background, $alert-border, $alert-color);
}
}

JavaScript behavior

Initialize初始化

Initialize elements as alerts将元素初始化为警报

var alertList = document.querySelectorAll('.alert')
var alerts =  [].slice.call(alertList).map(function (element) {
return new bootstrap.Alert(element)
})

For the sole purpose of dismissing an alert, it isn’t necessary to initialize the component manually via the JS API. 仅出于解除警报的目的,不需要通过JSAPI手动初始化组件。By making use of data-bs-dismiss="alert", the component will be initialized automatically and properly dismissed.通过使用数据data-bs-dismiss="alert",该组件将自动初始化并正确关闭。

See the triggers section for more details.有关更多详细信息,请参阅触发器部分。

Triggers触发器

Dismissal can be achieved with the data attribute on a button within the alert as demonstrated below:可通过警报内按钮上的data属性实现解雇,如下所示:

<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>

or on a button outside the alert using the data-bs-target as demonstrated below:或在警报外的按钮上使用data-bs-target,如下所示:

<button type="button" class="btn-close" data-bs-dismiss="alert" data-bs-target="#my-alert" aria-label="Close"></button>

Note that closing an alert will remove it from the DOM.请注意,关闭警报会将其从DOM中删除。

Methods方法

Method方法 Description描述
closeCloses an alert by removing it from the DOM. 通过从DOM中删除警报来关闭警报。If the .fade and .show classes are present on the element, the alert will fade out before it is removed.如果元素上存在.fade.show类,则警报将在删除之前淡出。
disposeDestroys an element's alert. 摧毁元素的警报。(Removes stored data on the DOM element)(删除DOM元素上存储的数据)
getInstanceStatic method which allows you to get the alert instance associated to a DOM element, you can use it like this: 静态方法,它允许您获取与DOM元素关联的警报实例,您可以这样使用它:bootstrap.Alert.getInstance(alert)
getOrCreateInstanceStatic method which returns an alert instance associated to a DOM element or create a new one in case it wasn't initialised.静态方法,该方法返回与DOM元素关联的警报实例,或在未初始化的情况下创建一个新实例。 You can use it like this: 您可以这样使用它:bootstrap.Alert.getOrCreateInstance(element)
var alertNode = document.querySelector('.alert')
var alert = bootstrap.Alert.getInstance(alertNode)
alert.close()

Events事件

Bootstrap’s alert plugin exposes a few events for hooking into alert functionality.Bootstrap的警报插件公开了一些事件,用于连接警报功能。

Event事件 Description描述
close.bs.alertFires immediately when the close instance method is called.调用close实例方法时立即激发。
closed.bs.alertFired when the alert has been closed and CSS transitions have completed.在警报关闭且CSS转换完成时激发。
var myAlert = document.getElementById('myAlert')
myAlert.addEventListener('closed.bs.alert', function () {
// 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()
})