Bootstrap JavaScript插件:弹出框(popover.js)

简介: Bootstrap 框架

作者:WangMin
格言:努力做好自己喜欢的每一件事

banner.png

  • 弹出提示(popover.js)是工具提示的子类,它比工具提示多了一个 content 参数,是工具提示插件的拓展,并且弹出框依赖于工具提示插件tooltip.js,如果你定制了 Bootstrap,就一定要将依赖的插件编译进去。

  • 初始化。由于性能的原因,工具提示和弹出框的 data 编程接口(data api)是必须要手动初始化的。在一个页面上一次性初始化所有弹出框的方式是通过data-toggle属性选中他们:

$(function () {
   
   
    $('[data-toggle="popover"]').popover();
})

你也可以单独初始化某个元素上的弹出提示对象。比如,以下代码就只激活 a标签的链接元素上定义的弹出提示:

<a href="#" data-toggle="popover" title="Hello" data-content="Hi, Long time no see, how are you?">Say Hello</a>
$(function(){
   
   
    $('a').popover();
})

与工具提示不同的是,默认情况下,在鼠标单击链接时,才会显示工具提示。并且,弹出提示的默认位置在目标对象的右侧。运行效果如下:

1.png

通过 data-placement 属性,可以设置提示信息的显示位置,可选值有 top | bottom | left | right。如图所示:

2.png

  • 默认情况下,弹出提示一旦显示,就不会再隐藏。如果希望点击空白区域让弹出框消失,只需设置data-trigger="focus"属性即可。为了更好的跨浏览器和跨平台效果,你必须使用<a>标签,而不能使用<button>标签,并且,还必须包含role="button"tabindex属性。
<a tabindex="0" class="btn btn-lg btn-danger" role="button" data-toggle="popover" data-trigger="focus" title="Dismissible popover" data-content="And here's some amazing content. It's very engaging. Right?">可消失的弹出框</a>

设置data-trigger="focus"属性以后,在链接上点击,会弹出提示信息,点击链接和提示框之外的空白区域,提示框便自动消失。


弹出提示插件的选项

Bootstrap为工具提示插件提供了 11 个选项,所有的选项都可以通过 data 属性或JavaScript进行设置。

名称 类型 默认值 说明
animation boolean true 为工具提示应用CSS淡入淡出过渡效果
container string false false 将提示条附加到特定元素,如 container: 'body'
content string \ function '' 如果data-content属性不存在,则使用这个默认值
delay number object 0 延迟显示和隐藏提示条的时间(毫秒)——手动触发提示条时无效如果只指定一个数值,则隐藏和显示都使用该数值。对象的结构为 delay: { show: 500, hide: 100 }
html boolean false 提示条支持插入 HTML。如果取值为 false,则使用 jQuery 的 text 方法插入文本。如果担心XSS攻击,那就使用文本
placement string function 'top' 设置提示条的位置,取值:top \ bottom \ left \ right
selector string false 如果提供了选择器,在触发该选择器时才显示提示信息
template string [1] 使用HTML面板创建工具提示。工具提示的title将被注入到.tooltip-inner中。.tooltip-arrow成为工具提示的箭头。最外层的包装元素应该拥有.tooltip类
title string function '' 如果title属性不存在,则使用默认值 '' 。要注意单引号与双引号的嵌套关系
trigger string 'hover focus' 工具提示的触发方式:click 、hover 、 focus 、manual。可以传入多个触发方式,以空格分隔。manual不能与其他触发方式组合使用
viewport string \ object \ function { selector: 'body', padding: 0 } 使工具提示始终在元素的边界之内。
表中 [1] 表示:
'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'

因为弹出框是以工具提示为基础,它继承了工具提示的选项,并且多了'content'这个选项,如上表所示。
其使用选项的方式与工具提示一样,如下:

<a href="##" id="bird">小鸟</a>
$('#bird').popover({
   
   
    html: true,
    title: '<img src="../img/timg.jpg" width="200px" height="200px"/>',
    placement: 'bottom',
    delay: {
   
    show: 500, hide: 100 }
});

运行效果如下:
3.png


弹出提示插件的方法

1、.popover(options)
使用一个可选的对象参数 options调用某个页面元素的弹出提示。如:

$('某个元素').popover({
   
   
    html:true,
    title:'<p>一只小鸟</p> <img src="../img/timg.jpg" width="170px" height="170px"/>',
    placement:'bottom',
    delay:{
   
   show:500,hide:100}
})

2、.popover('show')
手动触发某个页面元素的弹出提示,如:

$('#element').popover('show')

3、.popover('hide')
手动隐藏某个页面元素的弹出提示,如:

$('#element').popover('hide')

4、.popover('toggle')
手动打开或隐藏某个页面元素的弹出提示,如:

$('#element').popover('toggle')

5、.popover('destroy')
手动隐藏并销毁某个页面元素的弹出提示。如:

$('#element').popover('destroy')

弹出框插件的事件

事件 含义
show.bs.popover show方法调用之后,立即触发该事件。
shown.bs.popover 当工具提示已经对用户可见(并且过渡效果执行完毕)之后,触发该事件
hide.bs.popover hide方法调用之后,立即触发该事件
hidden.bs.popover 当工具提示已经被隐藏(并且过渡效果执行完毕)之后,触发该事件
inserted.bs.popover 当向DOM插入工具提示模板时,在模板插入完成并且show.bs.popover触发事件之后,触发该事件。
 $('#myTooltip').on('hidden.bs.popover', function () {
   
   
     alert("弹框已经隐藏。");
 });

就先分享到这里!! :smile: 后续继续更新!!

目录
相关文章
|
2月前
|
编解码 JavaScript 前端开发
JS逆向浏览器脱环境专题:事件学习和编写、DOM和BOM结构、指纹验证排查、代理自吐环境通杀环境检测、脱环境框架、脱环境插件解决
JS逆向浏览器脱环境专题:事件学习和编写、DOM和BOM结构、指纹验证排查、代理自吐环境通杀环境检测、脱环境框架、脱环境插件解决
58 1
|
2月前
|
Java 数据库连接 数据库
从零到精通:揭秘 Hibernate 构建持久层服务的全过程,你离数据持久化大师还有多远?
【8月更文挑战第31天】本文详细介绍了如何从零开始使用 Hibernate 构建一个持久层服务。首先,通过在 Maven 项目中添加必要的依赖,确保项目具备使用 Hibernate 的条件。接着,配置 `hibernate.cfg.xml` 文件以连接 MySQL 数据库,并设置了基本属性。然后定义了一个简单的 `User` 实体类及其映射关系。此外,还创建了一个 `HibernateUtil` 工具类来管理 `SessionFactory`。
28 0
|
2月前
|
缓存 JavaScript 前端开发
Vue.js与JavaScript性能优化终极揭秘:掌握这些技巧,让你的Web应用飞一般地流畅!
【8月更文挑战第30天】随着前端应用复杂度的增加,性能优化变得至关重要。本文深入探讨了如何利用Vue.js和JavaScript实现高效的应用性能。主要内容包括:优化组件设计以减少不必要的渲染,采用异步组件与懒加载技术加速应用启动,利用虚拟滚动和分页处理大数据集,改进Vuex使用方式以及合理运用浏览器缓存等策略。通过具体示例和最佳实践,帮助开发者充分挖掘Vue.js潜力,打造高性能的前端应用。
48 0
|
2月前
|
存储 JavaScript 前端开发
【Vue.js的神秘力量】一键解锁:如何让Bootstrap和Vuex成为你的开发超能力?
【8月更文挑战第30天】Vue.js是一个轻量且灵活的JavaScript框架,易于上手且功能强大。为提高开发效率和应用交互性,常需集成第三方库。本文介绍如何在Vue.js项目中集成Bootstrap和Vuex,及其它常见第三方库。Bootstrap提供响应式设计和预制组件,通过安装插件和引入CSS/JS即可集成;Vuex作为官方状态管理库,通过安装并创建store来管理组件状态。此外,Vue.js还可轻松集成Axios和Vue Router等库,提升HTTP请求和页面路由功能。合理选择和集成第三方库能显著提升开发效率,但需保持代码可维护性和可读性。
19 0
|
2月前
|
前端开发 JavaScript 开发者
Vue.js 与第三方库的神秘融合:Bootstrap、Vuex 等究竟带来何种惊喜?
【8月更文挑战第30天】Vue.js 作为一款流行的前端框架,凭借其强大的功能和易用性深受开发者喜爱。它不仅能独立运作,还能无缝集成各种第三方库,显著提升开发效率。例如,通过 `vue-bootstrap`,我们可以轻松引入 Bootstrap 的响应式组件,快速打造美观的用户界面;借助 Vuex,Vue 提供的状态管理方案,能有效解决复杂应用中的状态共享难题。此外,诸如 `axios` 和 `moment` 等库也能进一步增强 Vue 的功能,使其成为构建高性能前端应用的理想选择。
29 0
|
2月前
|
设计模式 JavaScript 前端开发
Vue.js 与第三方库的奇妙融合,Bootstrap 和 Vuex 究竟能带来何种意想不到的变革?
【8月更文挑战第30天】在现代Web开发中,结合使用JavaScript设计模式与框架如Vue.js能显著提升代码质量和项目的可维护性。本文探讨了常见JavaScript设计模式及其在Vue.js中的应用。通过具体示例介绍了工厂模式、单例模式和策略模式的应用场景及其实现方法。例如,工厂模式通过`NavFactory`根据用户角色动态创建不同的导航栏组件;单例模式则通过全局事件总线`eventBus`实现跨组件通信;策略模式用于处理不同的表单验证规则。这些设计模式的应用不仅提高了代码的复用性和可维护性,还使得Vue应用更加模块化和灵活。
13 0
|
2月前
|
设计模式 JavaScript 前端开发
从工厂到单例再到策略:Vue.js高效应用JavaScript设计模式
【8月更文挑战第30天】在现代Web开发中,结合使用JavaScript设计模式与框架如Vue.js能显著提升代码质量和项目的可维护性。本文探讨了常见JavaScript设计模式及其在Vue.js中的应用。通过具体示例介绍了工厂模式、单例模式和策略模式的应用场景及其实现方法。例如,工厂模式通过`NavFactory`根据用户角色动态创建不同的导航栏组件;单例模式则通过全局事件总线`eventBus`实现跨组件通信;策略模式用于处理不同的表单验证规则。这些设计模式的应用不仅提高了代码的复用性和灵活性,还增强了Vue应用的整体质量。
21 0
|
2月前
|
JavaScript 前端开发 API
揭秘Vue.js与JavaScript融合的神秘力量:如何一键解锁高效响应式Web应用的终极秘籍?
【8月更文挑战第30天】随着前端技术的发展,Vue.js凭借其轻量级、易上手和高度响应式的特性,在前端开发领域迅速崛起,成为构建现代Web应用的首选框架之一。Vue.js与JavaScript深度融合,使开发者能高效灵活地打造美观且功能强大的应用。本文将作为实战指南,带您深入了解Vue.js与JavaScript结合的奥秘,揭示构建高效响应式Web应用的秘籍。从Vue.js的基础开始,逐步介绍如何利用其数据驱动视图的特点,结合JavaScript的高级特性,如定时器、Promise、async/await等,提升应用的交互性和用户体验。
21 0
|
2月前
|
JavaScript 前端开发 测试技术
[译] 用 Vue.js 3 Composition API 创建 i18n 插件
[译] 用 Vue.js 3 Composition API 创建 i18n 插件
N..
|
5月前
|
开发框架 前端开发 UED
Bootstrap的CSS组件
Bootstrap的CSS组件
N..
50 0