Bootstrap 信息提示框
概述
Bootstrap 信息提示框(Alerts)用于向用户提供上下文反馈消息。它们支持任意长度的文本,以及可选的关闭按钮。
基本信息提示框
使用 .alert 类和上下文类创建基本的信息提示框:
html
<div class="alert alert-primary" role="alert">
这是一个 primary 信息提示框 — 查看一下!
</div>
<div class="alert alert-secondary" role="alert">
这是一个 secondary 信息提示框 — 查看一下!
</div>
<div class="alert alert-success" role="alert">
这是一个 success 信息提示框 — 查看一下!
</div>
<div class="alert alert-danger" role="alert">
这是一个 danger 信息提示框 — 查看一下!
</div>
<div class="alert alert-warning" role="alert">
这是一个 warning 信息提示框 — 查看一下!
</div>
<div class="alert alert-info" role="alert">
这是一个 info 信息提示框 — 查看一下!
</div>
<div class="alert alert-light" role="alert">
这是一个 light 信息提示框 — 查看一下!
</div>
<div class="alert alert-dark" role="alert">
这是一个 dark 信息提示框 — 查看一下!
</div>带链接的信息提示框
使用 .alert-link 类为信息提示框中的链接提供匹配的颜色:
html
<div class="alert alert-primary" role="alert">
这是一个 primary 信息提示框,包含 <a href="#" class="alert-link">一个示例链接</a>。点击查看效果。
</div>
<div class="alert alert-success" role="alert">
这是一个 success 信息提示框,包含 <a href="#" class="alert-link">一个示例链接</a>。点击查看效果。
</div>
<div class="alert alert-danger" role="alert">
这是一个 danger 信息提示框,包含 <a href="#" class="alert-link">一个示例链接</a>。点击查看效果。
</div>附加内容
信息提示框还可以包含其他 HTML 元素,如标题、段落和分隔符:
html
<div class="alert alert-success" role="alert">
<h4 class="alert-heading">干得好!</h4>
<p>恭喜,你成功地阅读了这个重要的信息提示框消息。这个示例文本将会运行更长一点,以便你能够看到信息提示框内的间距是如何与这种内容一起工作的。</p>
<hr>
<p class="mb-0">当你需要的时候,一定要使用边距工具来保持整洁。</p>
</div>可关闭的信息提示框
使用信息提示框 JavaScript 插件,可以关闭任何内联的信息提示框:
html
<div class="alert alert-warning alert-dismissible fade show" role="alert">
<strong>注意!</strong> 你应该检查下面的一些字段。
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div>带图标的信息提示框
使用 Bootstrap Icons
html
<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>
这是一个带图标的 primary 信息提示框。
</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>
这是一个带图标的 success 信息提示框。
</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>
这是一个带图标的 danger 信息提示框。
</div>
</div>使用内联 SVG
html
<div class="alert alert-success d-flex align-items-center" role="alert">
<svg width="24" height="24" fill="currentColor" class="bi bi-check-circle-fill flex-shrink-0 me-2" 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.061L6.97 11.03a.75.75 0 0 0 1.079-.02l3.992-4.99a.75.75 0 0 0-.01-1.05z"/>
</svg>
<div>
操作成功完成!
</div>
</div>
<div class="alert alert-warning d-flex align-items-center" role="alert">
<svg width="24" height="24" fill="currentColor" class="bi bi-exclamation-triangle-fill flex-shrink-0 me-2" 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"/>
</svg>
<div>
请注意这个重要警告!
</div>
</div>实际示例
html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Bootstrap 信息提示框示例</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div class="container my-5">
<h1>Bootstrap 信息提示框示例</h1>
<!-- 基本信息提示框 -->
<h2>基本信息提示框</h2>
<div class="alert alert-primary" role="alert">
<strong>信息:</strong> 这是一个基本的信息提示框。
</div>
<div class="alert alert-success" role="alert">
<strong>成功:</strong> 操作已成功完成!
</div>
<div class="alert alert-warning" role="alert">
<strong>警告:</strong> 请注意这个重要提醒。
</div>
<div class="alert alert-danger" role="alert">
<strong>错误:</strong> 发生了一个错误,请重试。
</div>
<!-- 带链接的信息提示框 -->
<h2 class="mt-5">带链接的信息提示框</h2>
<div class="alert alert-info" role="alert">
需要帮助?请查看我们的 <a href="#" class="alert-link">帮助文档</a> 或 <a href="#" class="alert-link">联系支持</a>。
</div>
<!-- 复杂内容的信息提示框 -->
<h2 class="mt-5">复杂内容的信息提示框</h2>
<div class="alert alert-success" role="alert">
<h4 class="alert-heading">账户创建成功!</h4>
<p>欢迎加入我们的平台!你的账户已经成功创建并激活。现在你可以:</p>
<ul class="mb-3">
<li>完善个人资料</li>
<li>浏览产品目录</li>
<li>开始使用我们的服务</li>
</ul>
<hr>
<p class="mb-0">如果你有任何问题,请随时联系我们的客服团队。</p>
</div>
<!-- 可关闭的信息提示框 -->
<h2 class="mt-5">可关闭的信息提示框</h2>
<div class="alert alert-warning alert-dismissible fade show" role="alert">
<strong>系统维护通知:</strong> 我们将在今晚 23:00-01:00 进行系统维护,期间服务可能暂时不可用。
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div>
<div class="alert alert-info alert-dismissible fade show" role="alert">
<strong>新功能上线:</strong> 我们刚刚发布了新的功能,快来体验吧!
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div>
<!-- 带图标的信息提示框 -->
<h2 class="mt-5">带图标的信息提示框</h2>
<div class="alert alert-success d-flex align-items-center" role="alert">
<svg width="24" height="24" fill="currentColor" class="bi bi-check-circle-fill flex-shrink-0 me-2" 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.061L6.97 11.03a.75.75 0 0 0 1.079-.02l3.992-4.99a.75.75 0 0 0-.01-1.05z"/>
</svg>
<div>
<strong>文件上传成功!</strong> 你的文件已经成功上传到服务器。
</div>
</div>
<div class="alert alert-danger d-flex align-items-center" role="alert">
<svg width="24" height="24" fill="currentColor" class="bi bi-exclamation-triangle-fill flex-shrink-0 me-2" 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"/>
</svg>
<div>
<strong>验证失败!</strong> 请检查你的输入信息是否正确。
</div>
</div>
<div class="alert alert-warning d-flex align-items-center alert-dismissible fade show" role="alert">
<svg width="24" height="24" fill="currentColor" class="bi bi-info-circle-fill flex-shrink-0 me-2" 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"/>
</svg>
<div>
<strong>提示:</strong> 记得定期保存你的工作进度。
</div>
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div>
<!-- 实际应用场景 -->
<h2 class="mt-5">实际应用场景</h2>
<!-- 表单验证提示 -->
<h4>表单验证提示</h4>
<form>
<div class="mb-3">
<label for="email" class="form-label">邮箱地址</label>
<input type="email" class="form-control is-invalid" id="email" value="invalid-email">
<div class="alert alert-danger mt-2 py-2" role="alert">
<small>请输入有效的邮箱地址。</small>
</div>
</div>
<div class="mb-3">
<label for="password" class="form-label">密码</label>
<input type="password" class="form-control is-valid" id="password">
<div class="alert alert-success mt-2 py-2" role="alert">
<small>密码强度良好。</small>
</div>
</div>
</form>
<!-- 状态通知 -->
<h4 class="mt-4">状态通知</h4>
<div class="row">
<div class="col-md-6 mb-3">
<div class="alert alert-primary" role="alert">
<div class="d-flex align-items-center">
<div class="spinner-border spinner-border-sm me-2" role="status">
<span class="visually-hidden">Loading...</span>
</div>
<div>正在处理你的请求...</div>
</div>
</div>
</div>
<div class="col-md-6 mb-3">
<div class="alert alert-info" role="alert">
<strong>队列中:</strong> 你的任务排在第 3 位
</div>
</div>
</div>
<!-- 系统消息 -->
<h4 class="mt-4">系统消息</h4>
<div class="alert alert-light border" role="alert">
<div class="d-flex">
<div class="flex-shrink-0">
<img src="data:image/svg+xml,%3csvg width='32' height='32' xmlns='http://www.w3.org/2000/svg'%3e%3crect width='32' height='32' fill='%23007bff'/%3e%3ctext x='50%25' y='50%25' font-size='16' fill='white' text-anchor='middle' dy='.3em'%3eA%3c/text%3e%3c/svg%3e" alt="管理员" class="rounded-circle">
</div>
<div class="flex-grow-1 ms-3">
<h6 class="mb-1">系统管理员</h6>
<p class="mb-1">系统将在 5 分钟后重启以应用更新。请保存你的工作。</p>
<small class="text-muted">2 分钟前</small>
</div>
</div>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>JavaScript 行为
手动关闭
javascript
// 手动关闭信息提示框
var alertElement = document.getElementById('myAlert');
var alert = new bootstrap.Alert(alertElement);
alert.close();事件监听
javascript
// 监听信息提示框关闭事件
var alertElement = document.getElementById('myAlert');
alertElement.addEventListener('closed.bs.alert', function () {
console.log('信息提示框已关闭');
});自定义样式
自定义颜色
css
.alert-custom {
color: #721c24;
background-color: #f8d7da;
border-color: #f5c6cb;
}
.alert-custom .alert-link {
color: #491217;
}圆角样式
html
<div class="alert alert-info rounded-pill px-4" role="alert">
这是一个圆角的信息提示框
</div>最佳实践
- 使用合适的类型:根据消息的性质选择合适的信息提示框类型
- 保持简洁:信息应该简洁明了,易于理解
- 提供行动指导:告诉用户下一步应该做什么
- 考虑可访问性:使用
role="alert"属性 - 适当使用关闭功能:对于临时消息使用可关闭的信息提示框
下一步
现在你已经掌握了 Bootstrap 信息提示框的使用方法,接下来我们将学习按钮组组件。