【前端】Bootstrap:JavaScript 组件与插件

Bootstrap 不仅提供了强大的 CSS 工具和组件,还内置了丰富的 JavaScript 组件和插件。这些 JavaScript 组件能够增强网页的交互性,让开发者在不编写大量 JavaScript 代码的情况下快速实现各种动态效果。Bootstrap 的 JavaScript 组件基于 jQuery(Bootstrap 5 版本中已经移除了对 jQuery 的依赖),通过数据属性或 JavaScript API 调用来初始化和控制组件。

本文将详细介绍 Bootstrap 的常用 JavaScript 组件与插件,包括:模态框(Modal)、工具提示(Tooltip)、弹出框(Popover)、滚动监听(Scrollspy)、折叠(Collapse)、轮播(Carousel)等。

模态框组件(Modal)

**模态框(Modal)**是一个经典的用户界面元素,常用于显示重要信息、确认操作或收集用户输入。Bootstrap 提供了强大且易用的模态框组件,允许开发者创建一个可弹出的对话框,覆盖页面的其余部分并获得用户的注意。

模态框可以通过触发器(如按钮)打开,并且可以通过 JavaScript API 手动触发。

基本结构

<!-- 模态框触发按钮 -->
<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#exampleModal">打开模态框
</button><!-- 模态框结构 -->
<div class="modal fade" id="exampleModal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true"><div class="modal-dialog"><div class="modal-content"><div class="modal-header"><h5 class="modal-title" id="exampleModalLabel">模态框标题</h5><button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button></div><div class="modal-body">这是模态框的内容。</div><div class="modal-footer"><button type="button" class="btn btn-secondary" data-bs-dismiss="modal">关闭</button><button type="button" class="btn btn-primary">保存更改</button></div></div></div>
</div>
  • data-bs-toggle="modal":标记触发模态框的元素。
  • data-bs-target="#exampleModal":指定要触发的模态框的 ID。
  • aria-hidden="true":确保屏幕阅读器不读取隐藏的模态框。

通过 JavaScript API 打开和关闭模态框

可以使用 JavaScript API 手动控制模态框的打开和关闭:

var myModal = new bootstrap.Modal(document.getElementById('exampleModal'))
myModal.show();  // 打开模态框
myModal.hide();  // 关闭模态框

进阶功能

  • 动画效果:默认情况下,模态框带有淡入淡出的动画效果,你可以通过移除 .fade 类取消动画效果。
  • 模态框大小:通过添加 .modal-lg.modal-sm 类来控制模态框的大小。
  • 垂直居中:通过 .modal-dialog-centered 类使模态框垂直居中显示。

工具提示组件(Tooltip)

**工具提示(Tooltip)**是当用户将鼠标悬停在元素上时,显示的一个小提示信息。Bootstrap 的工具提示组件可以通过 JavaScript 或数据属性初始化,并且支持不同方向的提示弹出位置。

工具提示可以通过 data-bs-toggle="tooltip" 属性来自动初始化。

基本结构

<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="top" title="这是一个工具提示">悬停显示工具提示
</button>
  • data-bs-toggle="tooltip":启用工具提示功能。
  • data-bs-placement="top":控制工具提示显示的位置(如:top、bottom、left、right)。

通过 JavaScript API 初始化工具提示

var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'))
var tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) {return new bootstrap.Tooltip(tooltipTriggerEl)
})

进阶功能

  • 延时显示:可以为工具提示设置显示和隐藏的延迟时间。
  • 触发方式:可以指定工具提示通过悬停、点击或焦点等方式触发。
  • 自定义内容:工具提示的内容可以通过 title 属性动态修改,也可以在 JavaScript 中设置。

弹出框组件(Popover)

**弹出框(Popover)**与工具提示类似,但功能更加丰富。除了提示文字外,弹出框可以包含标题和更多内容,用于提示更详细的信息。

和工具提示一样,弹出框也可以通过 data-bs-toggle="popover" 属性自动初始化。

基本结构

<button type="button" class="btn btn-secondary" data-bs-toggle="popover" data-bs-content="这是弹出框内容">点击显示弹出框
</button>
  • data-bs-toggle="popover":启用弹出框功能。
  • data-bs-content="...":设置弹出框的内容。

通过 JavaScript API 初始化弹出框

var popoverTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="popover"]'))
var popoverList = popoverTriggerList.map(function (popoverTriggerEl) {return new bootstrap.Popover(popoverTriggerEl)
})

进阶功能

  • 标题:可以通过 title 属性或 data-bs-title 设置弹出框的标题。
  • 自定义模板:可以自定义弹出框的 HTML 结构和样式。
  • 触发方式:同样支持悬停、点击或焦点等方式触发。

滚动监听组件(Scrollspy)

**滚动监听(Scrollspy)**用于监视页面的滚动位置,并自动更新导航栏中的激活状态。这在单页面应用或长网页中尤为实用,可以帮助用户知道当前所在的位置。

首先,需要有一个固定的导航栏,滚动监听的目标是一个滚动区域(如 bodydiv)。

基本结构

<nav id="navbar-example" class="navbar navbar-light bg-light fixed-top"><a class="navbar-brand" href="#">滚动监听</a><ul class="nav nav-pills"><li class="nav-item"><a class="nav-link" href="#section1">部分 1</a></li><li class="nav-item"><a class="nav-link" href="#section2">部分 2</a></li><li class="nav-item"><a class="nav-link" href="#section3">部分 3</a></li></ul>
</nav><div data-bs-spy="scroll" data-bs-target="#navbar-example" data-bs-offset="0" class="scrollspy-example"><h4 id="section1">部分 1</h4><p>部分 1 的内容...</p><h4 id="section2">部分 2</h4><p>部分 2 的内容...</p><h4 id="section3">部分 3</h4><p>部分 3 的内容...</p>
</div>
  • data-bs-spy="scroll":启用滚动监听功能。
  • data-bs-target="#navbar-example":指定监听的导航目标。

通过 JavaScript API 初始化

var scrollSpy = new bootstrap.ScrollSpy(document.body, {target: '#navbar-example'
})

进阶功能

  • 偏移量:可以通过 data-bs-offset 属性设置偏移量,使得导航项提前或延后激活。
  • 手动更新:当 DOM 结构发生变化时,可以使用 scrollSpy.refresh() 来手动更新。

折叠组件(Collapse)

**折叠(Collapse)**组件用于创建可以展开和收起的内容块,常用于隐藏一些初始状态下不必要显示的内容,提升页面的整洁性和用户体验。

折叠组件通常与按钮一起使用,点击按钮后,指定的内容区域会展开或折叠。

基本结构

<button class="btn btn-primary" type="button" data-bs-toggle="collapse" data-bs-target="#collapseExample" aria-expanded="false" aria-controls="collapseExample">点击展开/收起内容
</button><div class="collapse" id="collapseExample"><div class="card card-body">这是折叠组件的内容。</div>
</div>
  • data-bs-toggle="collapse":启用折叠功能。
  • data-bs-target="#collapseExample":指定要折叠的目标内容区域。

通过 JavaScript API 控制

var collapseElement = document.getElementById('collapseExample')
var collapse = new bootstrap.Collapse(collapseElement)
collapse.show();  // 展开内容
collapse.hide();  // 收起内容

进阶功能

  • 折叠多块内容:可以使用 accordion 结构折叠多个内容块,保证同一时间只有一个块是展开的。
  • 动画效果:折叠组件带有默认的动画效果。

轮播组件(Carousel)

**轮播(Carousel)**组件用于在一个区域内循环显示一组图片或内容,通常带有自动播放、左右滑动的功能,是展示多个内容或图像的最佳选择之一。

轮播组件通常包含一个轮播区域,内部包含多个幻灯片(slides)和左右导航箭头。

基本结构

<div id="carouselExample" class="carousel slide" data-bs-ride="carousel"><div class="carousel-inner"><div class="carousel-item active"><img src="image1.jpg" class="d-block w-100" alt="..."></div><div class="carousel-item"><img src="image2.jpg" class="d-block w-100" alt="..."></div><div class="carousel-item"><img src="image3.jpg" class="d-block w-100" alt="..."></div></div><button class="carousel-control-prev" type="button" data-bs-target="#carouselExample" data-bs-slide="prev"><span class="carousel-control-prev-icon" aria-hidden="true"></span><span class="visually-hidden">上一张</span></button><button class="carousel-control-next" type="button" data-bs-target="#carouselExample" data-bs-slide="next"><span class="carousel-control-next-icon" aria-hidden="true"></span><span class="visually-hidden">下一张</span></button>
</div>
  • data-bs-ride="carousel":启用自动播放轮播功能。
  • data-bs-slide="prev" / data-bs-slide="next":控制前一张或下一张幻灯片。

通过 JavaScript API 控制

var myCarousel = document.getElementById('carouselExample')
var carousel = new bootstrap.Carousel(myCarousel)
carousel.next();  // 显示下一张幻灯片
carousel.prev();  // 显示上一张幻灯片
carousel.pause(); // 暂停自动播放
carousel.cycle(); // 开始自动播放

进阶功能

  • 指示器(Indicators):可以在轮播下方添加指示器来展示当前显示的幻灯片。
  • 自动播放设置:通过 interval 属性或选项设置自动播放间隔时间。

总结

Bootstrap 的 JavaScript 组件为网页开发提供了强大的交互功能,从模态框、工具提示、弹出框到折叠、滚动监听、轮播,所有这些组件都可以通过简单的 HTML 结构和数据属性实现,并且可以通过 JavaScript API 进行更细粒度的控制。熟练掌握这些组件,能够帮助开发者创建功能强大且用户体验良好的网页。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/56101.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

qt+opengl 实现纹理贴图,平移旋转,绘制三角形,方形

1 首先qt 已经封装了opengl&#xff0c;那么我们就可以直接用了&#xff0c;这里面有三个函数需要继承 virtual void initializeGL() override; virtual void resizeGL(int w,int h) override; virtual void paintGL() override; 这三个函数是实现opengl的重要函数。 2 我们…

带你了解linux:学习第十六课 linux 之 Ftp Sftp

今天要介绍的是最常用的传输工具 Ftp和Sftp。 FTP&#xff08;File Transfer Protocol&#xff09;和SFTP&#xff08;Secure File Transfer Protocol&#xff09;是两种用于在网络上进行文件传输的协议。FTP是较早的协议&#xff0c;而SFTP是基于SSH&#xff08;Secure Shell…

E: Unable to locate package:无法定位包的完美解决方法 ️

博主 默语带您 Go to New World. ✍ 个人主页—— 默语 的博客&#x1f466;&#x1f3fb; 《java 面试题大全》 《java 专栏》 &#x1f369;惟余辈才疏学浅&#xff0c;临摹之作或有不妥之处&#xff0c;还请读者海涵指正。☕&#x1f36d; 《MYSQL从入门到精通》数据库是开…

Bug剖析

Bug剖析 • 所有的Bug报告有以下的基本要求&#xff1a; • 标题。要简略。 • 指派。谁来处理这个问题。 • 重现步骤。问题再次出现的相关步骤。 • 优先级别。问题的紧迫性与重要性。 • 严重程度。问题所产生的后果。 • 解决方案。怎么解决问题。 其他很多方面对修复问题…

LabVIEW提高开发效率技巧----点阵图(XY Graph)

在LabVIEW开发中&#xff0c;点阵图&#xff08;XY Graph&#xff09; 是一种强大的工具&#xff0c;尤其适用于需要实时展示大量数据的场景。通过使用点阵图&#xff0c;开发人员能够将实时数据可视化&#xff0c;帮助用户更直观地分析数据变化。 1. 点阵图的优势 点阵图&…

树莓派应用--AI项目实战篇来啦-17.YOLOv8目标检测-安全帽检测

1. YOLOv8介绍 YOLOv8是Ultralytics公司2023年推出的Yolo系列目标检测算法&#xff0c;可以用于图像分类、物体检测和实例分割等任务。YOLOv8作为YOLO系列算法的最新成员&#xff0c;在损失函数、Anchor机制、样本分配策略等方面进行了全面优化和创新。这些改进不仅提高了模型的…

长芯微LSPGD1系列带气嘴DIP8封装集成表压传感器完全替代松下ADP51B62替代ADP51B62,成本更低!

描述 LSPGD1是长芯微针对家电医疗等市场推出的经过校准的表压传感器系列产品。该系列产品采用高性能信号调理芯片对MEMS压阻芯体输出进行温度和压力的校准和补偿&#xff0c;保证性能和可靠性的同时对封装进行了集成&#xff0c;易于使用。LSPGD1系列集成压力传感器可选量程为…

声明式LoggerFactory.getLogger和注解@Slf4j原理区别和推荐

LoggerFactory.getLogger 和 Slf4j 注解在实现日志功能时使用的原理有一些不同&#xff0c;以下是它们的区别&#xff1a; 1. LoggerFactory.getLogger&#xff1a; 手动创建日志实例&#xff1a;使用 LoggerFactory.getLogger 方法时&#xff0c;开发者需要手动在类中声明并…

记一次 Flink mongoDB CDC 到Kafka遇到的问题

背景 最近在做一个数据接入的部分事情&#xff0c;从mongo导入到 adb&#xff0c;趁着做的事情聊一下Flink内部的一些机制。 首先这会拆分两个部分&#xff0c;一部分是从 mongo 到 Kafka&#xff0c;另一部分是从 Kafka 到 adb&#xff0c;其中遇到了一些问题&#xff0c;比如…

Java多线程之死锁(死锁产生条件、手写简单死锁程序、破坏死锁)(面试常有)

目录 一、死锁。 &#xff08;1&#xff09;实际生活"死锁"情景。 &#xff08;2&#xff09;程序中举例。 &#xff08;3&#xff09;死锁产生必要的条件。 <1> 互斥使用。 <2> 不可抢占。 <3> 请求和保持。 <4> 循环等待。 &#xff08;4&…

iOS 14 自定义画中画悬浮窗 Custom AVPictureInPictureController 实现方案

iOS 14&#xff0c;基于 AVPictureInPictureController&#xff0c;实现自定义画中画&#xff0c;涵盖所有功能与难点。 市面上的各种悬浮钟和提词器的原理都是基于此。 Demo源码在文末。 使用 iOS 画中画的要求&#xff1a; 真机&#xff0c;不能使用模拟器&#xff1b;iO…

starrocks-删除表字段

1、背景 之前做了个大宽表&#xff0c;将近100个字段&#xff0c;但是后来发现很多字段在实际生产上都没有用到&#xff0c;并且随着数据量的增加&#xff0c;给集群的存储以及消费任务的解析带来了比较大的压力。所以决定对字段做删除处理。 当前的表是使用routine load任务从…

微服务架构:核心组件解析与设计思考(服务发现、API网关、 配置中心、负载均衡、服务调用、服务熔断、链路追踪、消息队列、服务安全、分布式事务)

微服务架构已成为大型系统设计中不可忽视的趋势&#xff0c;它通过将单一系统拆分为多个自治的服务&#xff0c;解决了传统单体架构难以应对的复杂性和扩展性问题。然而&#xff0c;微服务架构的成功依赖于多个核心组件的协同工作&#xff0c;从服务发现到API网关&#xff0c;从…

hadoop全分布式搭建(三台虚拟机,一个主节点,两个从节点)

根据尚硅谷哔哩哔哩视频搭建&#xff1a;bilibili.com/video/BV1Qp4y1n7EN/ 安装虚拟机教程可参考&#xff1a;VMware虚拟机 安装 Centos7(linux)&#xff08;新手超详细教程&#xff09;_vmware安装centos7教程-CSDN博客 集群配置如下&#xff1a; 一、先配置一台虚拟机hadoo…

python:假的身份信息生成模块faker

前言 发现一个有趣的python模块&#xff08;faker&#xff09;&#xff0c;他支持生成多个国家语言下的假身份信息&#xff0c;包含人名、地址、邮箱、公司名、电话号码、甚至是个人简历&#xff01; 你可以拿它做一些自动化测试&#xff0c;或一些跟假数据有关的填充工作。 代…

【计算机网络 - 基础问题】每日 3 题(三十八)

✍个人博客&#xff1a;https://blog.csdn.net/Newin2020?typeblog &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/fYaBd &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞…

【华为HCIP实战课程七】OSPF邻居关系排错MTU问题,网络工程师

一、MTU MUT默认1500,最大传输单元,一致性检测 [R3-GigabitEthernet0/0/1]mtu 1503//更改R3的MTU为1503 查看R3和SW1之间的OSPF邻居关系正常: 默认华为设备没有开启MTU一致性检测! [R3-GigabitEthernet0/0/1]ospf mtu-enable //手动开启MTU检测 [SW1-Vlanif30]ospf mtu…

PCL点云处理之求法向量

求法向量干什么&#xff1f;将点渲染成面 1、一个点垂直于一个曲线的切线叫法线 2、在点云中取一块区域&#xff0c;用最小二乘将区域中的点云拟合成一个面&#xff08;贴合在曲面上的一个切面&#xff09;在相近的区域计算出n个这样的面&#xff0c;用这个面求出法向量&#…

第十五届蓝桥杯C++B组省赛

文章目录 1.握手问题解题思路1&#xff08;组合数学&#xff09;解题思路2&#xff08;暴力枚举&#xff09; 2.小球反弹做题思路 3.好数算法思路&#xff08;暴力解法&#xff09;---不会超时 4.R格式算法思路 5.宝石组合算法思路---唯一分解定理 6.数字接龙算法思路----DFS 7…

分布式数据库的进度管理:TiDB 备份恢复工具 PiTR 的原理与实践

导读 对于一款企业级数据库产品而言&#xff0c;数据的安全性和可恢复性是至关重要的。PiTR&#xff08;Point in Time Restore&#xff09;作为 TiDB 备份工具的核心功能之一&#xff0c;提供了一种精细的数据恢复能力&#xff0c;允许用户将数据库集群恢复到过去的任意时间点…