Bootstrap 的Popovers(弹出框)是一个用于在网页上任何元素上添加类似 iOS 系统中的弹出提示框的功能。
在使用 popover 插件时,需要了解以下几点:
- 依赖第三方库 Popper:Popover 依赖第三方库 Popper 来进行定位。因此,你需要在引入 bootstrap.js 之前包含 popper.min.js,或者使用包含 Popper 的 bootstrap.bundle.min.js。
- 依赖 Popover 插件:要使用 popover,你需要将其作为依赖项引入。
- 手动初始化:出于性能考虑,popover 不会默认初始化,因此你需要手动进行初始化。
- 内容为空时不显示:如果 popover 的标题或内容为空,则不会显示 popover。
- 指定容器:为避免在更复杂的组件中(如输入框组、按钮组等)出现渲染问题,应指定
container: 'body'
。 - 隐藏元素无法触发:对隐藏元素触发 popover 将不起作用。
- 对禁用元素的处理:对于
.disabled
或disabled
元素,popover 必须在其包装元素上触发。 - 多行文本锚点:如果 popover 是由跨越多行的锚点触发的,那么 popover 将在锚点的整体宽度之间居中。要避免这种情况,请在
<a>
标签上使用.text-nowrap
类。 - DOM 删除前隐藏:在对应的元素从 DOM 中移除之前,必须先隐藏 popover。
- 影子 DOM 中的元素可以触发:popover 可以由位于影子 DOM 中的元素触发。
示例
如上所述,你需要在使用 popover 之前初始化它们。一种初始化页面上所有 popover 的方法是使用它们的 data-bs-toggle
属性来选择它们,如下所示:
const popoverTriggerList = document.querySelectorAll('[data-bs-toggle="popover"]');
const popoverList = [...popoverTriggerList].map(popoverTriggerEl => new bootstrap.Popover(popoverTriggerEl));
在上面的代码中,我们首先使用 document.querySelectorAll
选择所有带有 data-bs-toggle="popover"
属性的元素,然后将这些元素转换为一个数组。接着,我们使用 map
方法遍历这个数组,并为每个元素创建一个新的 bootstrap.Popover
实例,以初始化 popover。
记住,在初始化 popover 之后,你还需要定义 popover 的内容。这通常是通过在触发元素的 HTML 中添加 data-bs-content
属性来完成的。此外,你还可以使用其他属性,如 data-bs-title
来设置 popover 的标题。
<button type="button" class="btn btn-lg btn-danger" data-bs-toggle="popover" data-bs-title="Popover title" data-bs-content="And here's some amazing content. It's very engaging. Right?">Click to toggle popover</button>
显示方向
以下示例展示了带有不同方向的 popover,每个按钮都使用了 data-bs-toggle="popover"
来触发 popover,并通过 data-bs-title
和 data-bs-content
分别设置标题和内容。同时,通过 data-bs-placement
属性来指定 popover 的显示方向。
<button type="button" class="btn btn-secondary" data-bs-container="body" data-bs-toggle="popover" data-bs-placement="top" data-bs-content="顶部的 popover">
顶部的 popover
</button>
<button type="button" class="btn btn-secondary" data-bs-container="body" data-bs-toggle="popover" data-bs-placement="right" data-bs-content="右侧的 popover">
右侧的 popover
</button>
<button type="button" class="btn btn-secondary" data-bs-container="body" data-bs-toggle="popover" data-bs-placement="bottom" data-bs-content="底部的 popover">
底部的 popover
</button>
<button type="button" class="btn btn-secondary" data-bs-container="body" data-bs-toggle="popover" data-bs-placement="left" data-bs-content="左侧的 popover">
左侧的 popover
</button>
// 初始化所有的 popover
const popoverTriggerList = document.querySelectorAll('[data-bs-toggle="popover"]');
const popoverList = [...popoverTriggerList].map(popoverTriggerEl => new bootstrap.Popover(popoverTriggerEl));
最后,请确保你已经按照 Bootstrap 的文档正确引入了所有必要的 CSS 和 JavaScript 文件,并且你的 HTML 结构符合 Bootstrap popover 的要求。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容