Bootstrap5中的Popovers(弹出框)组件

图片[1]-Bootstrap5中的Popovers(弹出框)组件-不止主题

Bootstrap 的Popovers(弹出框)是一个用于在网页上任何元素上添加类似 iOS 系统中的弹出提示框的功能。

在使用 popover 插件时,需要了解以下几点:

  1. 依赖第三方库 Popper:Popover 依赖第三方库 Popper 来进行定位。因此,你需要在引入 bootstrap.js 之前包含 popper.min.js,或者使用包含 Popper 的 bootstrap.bundle.min.js。
  2. 依赖 Popover 插件:要使用 popover,你需要将其作为依赖项引入。
  3. 手动初始化:出于性能考虑,popover 不会默认初始化,因此你需要手动进行初始化。
  4. 内容为空时不显示:如果 popover 的标题或内容为空,则不会显示 popover。
  5. 指定容器:为避免在更复杂的组件中(如输入框组、按钮组等)出现渲染问题,应指定 container: 'body'
  6. 隐藏元素无法触发:对隐藏元素触发 popover 将不起作用。
  7. 对禁用元素的处理:对于 .disableddisabled 元素,popover 必须在其包装元素上触发。
  8. 多行文本锚点:如果 popover 是由跨越多行的锚点触发的,那么 popover 将在锚点的整体宽度之间居中。要避免这种情况,请在 <a> 标签上使用 .text-nowrap 类。
  9. DOM 删除前隐藏:在对应的元素从 DOM 中移除之前,必须先隐藏 popover。
  10. 影子 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
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容