当前位置: 首页 > news >正文

【前端】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 进行更细粒度的控制。熟练掌握这些组件,能够帮助开发者创建功能强大且用户体验良好的网页。

相关文章:

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

Bootstrap 不仅提供了强大的 CSS 工具和组件&#xff0c;还内置了丰富的 JavaScript 组件和插件。这些 JavaScript 组件能够增强网页的交互性&#xff0c;让开发者在不编写大量 JavaScript 代码的情况下快速实现各种动态效果。Bootstrap 的 JavaScript 组件基于 jQuery&#xf…...

部署 Open WebUI

1. 安装docker 2.启动Hyper-v 3.下载 安装 WSL wsl --update wsl --install 4. 打开 DeskDocker 5. 打开 运行 ollama 参考 Windows 部署 ollama-CSDN博客 6. 部署 运行 open webui docker docker run -d -p 3000:8080 --add-hosthost.docker.internal:host-gateway -v o…...

HUAWEI_HCIA_实验指南_Lib2.1_交换机基础配置

1、原理概述 交换机之间通过以太网电接口对接时需要协商一些接口参数&#xff0c;比如速率、双工模式等。交换机的全双工是指交换机在发送数据的同时也能够接收数据&#xff0c;两者同时进行。就如平时打电话一样&#xff0c;说话的同时也能够听到对方的声音。而半双工指在同一…...

第4天:用户界面和布局补充材料——`activity_login.xml`解读

下面是对“第4天&#xff1a;用户界面和布局补充材料”该文学习的更深层次的补充材料&#xff0c;对 activity_login.xml 文件的理解。 下面对activity_login.xml’ 文件中每一行进行详细解释&#xff1a; <?xml version"1.0" encoding"utf-8"?>声…...

《深入浅出LLM基础篇》(五):Propmt工程优化

&#x1f389;AI学习星球推荐&#xff1a; GoAI的学习社区 知识星球是一个致力于提供《机器学习 | 深度学习 | CV | NLP | 大模型 | 多模态 | AIGC 》各个最新AI方向综述、论文等成体系的学习资料&#xff0c;配有全面而有深度的专栏内容&#xff0c;包括不限于 前沿论文解读、…...

基于WebSocket实现简易即时通讯功能

代码实现 pom.xml <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency><groupId>org.springframework.boot</groupId><artifa…...

2012年国赛高教杯数学建模D题机器人避障问题解题全过程文档及程序

2012年国赛高教杯数学建模 D题 机器人避障问题 图1是一个800800的平面场景图&#xff0c;在原点O(0, 0)点处有一个机器人&#xff0c;它只能在该平面场景范围内活动。图中有12个不同形状的区域是机器人不能与之发生碰撞的障碍物&#xff0c;障碍物的数学描述如下表&#xff1a…...

Linux驱动开发——设备树

文章目录 1 什么是设备树&#xff1f;2 DTS、DTB和DTC3 DTS语法3.1 dtsi头文件3.2 设备节点3.3 标准属性3.4 根节点compatible属性3.5 向节点追加或修改内容 4 创建小型模板设备树5 设备树在系统中的体现6 绑定信息文档7 设备树常用OF操作函数7.1 查找节点的OF函数7.2 查找父/子…...

spring boot 2.7整合Elasticsearch Java client + ingest attachment实现文档解析

一、软件环境 软件版本号备注Spring boot2.7.23.x版本建议使用ElasticSearch8.xElasticSearch7.17.4ElasticSearch 7.x 可使用JDK 8 ElasticSearch 8.x 要求使用JDK 11 二、安装ElasticSearch 下载地址&#xff1a;https://artifacts.elastic.co/downloads/elasticsearch/el…...

一、PyCharm 基本快捷键总结

PyCharm 快捷键 前言一、编辑&#xff08;Editing&#xff09;二、查找/替换(Replace)三、运行(Running)四、重构(Refactoring)五、基本(General) 前言 下面我们将学习一些 Pycharm 中的快捷键来帮我们更好的使用工具。 一、编辑&#xff08;Editing&#xff09; 快捷键快捷键…...

Windows系统C盘爆满了,如何清理?

Windows系统C盘爆满了&#xff0c;如何清理&#xff1f; 大家好&#xff0c;我是秋意零。 相信使用过Windows系统的朋友&#xff0c;都见过C盘那道靓丽的 “红色风景线” &#xff01; 我自己的Win10系统&#xff0c;已经使用了4-5年时间了。最近频频出现"红色风景线&q…...

【C++】踏上C++学习之旅(一):初识C++和命名空间

文章目录 前言1. 初识C2. C的发展阶段2. 命名空间2.1 为什么要有命名空间&#xff1f;2.2 命名空间的语法2.3 命名空间的原理2.4 使用命名空间的三种方式2.4.1 加命名空间名称及作用域限定符( :: )2.4.2 使用using关键字将命名空间中某个成员 引入2.4.3 使用using namespace 命…...

tensorflow入门案例手写数字识别人工智能界的helloworld项目落地1

参考 https://tensorflow.google.cn/?hlzh-cn https://tensorflow.google.cn/tutorials/keras/classification?hlzh-cn 项目资源 https://download.csdn.net/download/AnalogElectronic/89872174 文章目录 一、案例学习1、导入测试和训练数据集&#xff0c;定义模型&#xff…...

深度学习——线性神经网络(三、线性回归的简洁实现)

目录 3.1 生成数据集3.2 读取数据集3.3 定义模型3.4 初始化模型参数3.5 定义损失函数3.6 定义优化算法3.7 训练 在上一节中&#xff0c;我们通过张量来自定义式地进行数据存储和线性代数运算&#xff0c;并通过自动微分来计算梯度。实际上&#xff0c;由于数据迭代器、损失函数…...

本地部署 Milvus

本地部署 Milvus 1. Install Milvus in Docker2. Install Attu, an open-source GUI tool 1. Install Milvus in Docker curl -sfL https://raw.githubusercontent.com/milvus-io/milvus/master/scripts/standalone_embed.sh -o standalone_embed.shbash standalone_embed.sh …...

Git基础-配置http链接的免密登录

问题描述 当我们在使用 git pull 或者 git push 进行代码拉取或代码提交时&#xff0c; 若我们的远程代码仓库是 http协议的链接时&#xff0c;就是就会提示我们进行账号密码的登录。 每次都要登录&#xff0c;这未免有些麻烦。 本文介绍一下免密登录的配置。解决方案 1 执行…...

华为OD机试真题-编码能力提升-2024年OD统一考试(E卷)

最新华为OD机试考点合集:华为OD机试2024年真题题库(E卷+D卷+C卷)_华为od机试题库-CSDN博客 每一题都含有详细的解题思路和代码注释,精编c++、JAVA、Python三种语言解法。帮助每一位考生轻松、高效刷题。订阅后永久可看,持续跟新。 题目描述 为了提升软件编码能力,小…...

高被引算法GOA优化VMD,结合Transformer-SVM的轴承诊断,保姆级教程!

本期采用2023年瞪羚优化算法优化VMD&#xff0c;并结合Transformer-SVM实现轴承诊断&#xff0c;算是一个小创新方法了。需要水论文的童鞋尽快&#xff01; 瞪羚优化算法之前推荐过&#xff0c;该成果于2023年发表在计算机领域三区SCI期刊“Neural Computing and Applications”…...

半小时速通RHCSA

1-7章: #01创建以上目录和文件结构&#xff0c;并将/yasuo目录拷贝4份到/目录下 #02查看系统合法shell #03查看系统发行版版本 #04查看系统内核版本 #05临时修改主机名 #06查看系统指令的查找路径 #07查看passwd指令的执行路径 #08为/yasuo/ssh_config文件在/mulu目录下创建软链…...

人工智能和机器学习之线性代数(一)

人工智能和机器学习之线性代数&#xff08;一&#xff09; 人工智能和机器学习之线性代数一将介绍向量和矩阵的基础知识以及开源的机器学习框架PyTorch。 文章目录 人工智能和机器学习之线性代数&#xff08;一&#xff09;基本定义标量&#xff08;Scalar&#xff09;向量&a…...

STM32外设应用详解

STM32外设应用详解 STM32微控制器是意法半导体&#xff08;STMicroelectronics&#xff09;推出的一系列基于ARM Cortex-M内核的高性能、低功耗32位微控制器。它们拥有丰富的外设接口和功能模块&#xff0c;可以满足各种嵌入式应用需求。本文将详细介绍STM32的外设及其应用&am…...

docker详解介绍+基础操作 (三)优化配置

1.docker 存储引擎 Overlay&#xff1a; 一种Union FS文件系统&#xff0c;Linux 内核3.18后支持 Overlay2&#xff1a;Overlay的升级版&#xff0c;docker的默认存储引擎&#xff0c;需要磁盘分区支持d-type功能&#xff0c;因此需要系统磁盘的额外支持。 关于 d-type 传送…...

细说Qt的状态机框架及其用法

文章目录 使用场景基本用法状态定义添加转换历史状态QStateMachine是Qt框架中用于构建状态机的一个类,它属于Qt的状态机框架(State Machine Framework)。这个框架提供了一种模型,用于设计响应不同事件(如用户输入、文件I/O或网络活动)的应用程序的行为。通过使用状态机,开发…...

Oracle-表空间与数据文件操作

目录 1、表空间创建 2、表空间修改 3、数据文件可用性切换操作 4、数据文件和表空间删除 1、表空间创建 &#xff08;1&#xff09;为 ORCL 数据库创建一个名为 BOOKTBS1 的永久表空间&#xff0c;数据文件为d:\bt01.dbf &#xff0c;大小为100M&#xff0c;区采用自动扩展…...

C# WinForm实现画笔签名及解决MemoryBmp格式问题

目录 需求 实现效果 开发运行环境 设计实现 界面布局 初始化 画笔绘图 清空画布 导出位图数据 小结 需求 我的文章 《C# 结合JavaScript实现手写板签名并上传到服务器》主要介绍了 web 版的需求实现&#xff0c;本文应项目需求介绍如何通过 C# WinForm 通过画布画笔…...

GC1272替代APX9172/茂达中可应用于电脑散热风扇应用分析

在电脑散热风扇应用中&#xff0c;选择合适的驱动器件对于风扇的性能和效率至关重要。以下是对GC1272替代APX9172/茂达在此类应用中的分析&#xff1a; 1. 功能比较 GC1272&#xff1a; 主要用于驱动直流风扇&#xff0c;具有高效的电流控制和调速功能。支持PWM调速&#xff0…...

《Linux从小白到高手》综合应用篇:详解Linux系统调优之服务器硬件优化

List item 本篇介绍Linux服务器硬件调优。硬件调优主要包括CPU、内存、磁盘、网络等关键硬件组。 1. CPU优化 选择适合的CPU&#xff1a; –根据应用需求选择多核、高频的CPU&#xff0c;以满足高并发和计算密集型任务的需求。CPU缓存优化&#xff1a; –确保CPU缓存&#x…...

PHP政务招商系统——高效连接共筑发展蓝图

政务招商系统——高效连接&#xff0c;共筑发展蓝图 &#x1f3db;️ 一、政务招商系统&#xff1a;开启智慧招商新篇章 在当今经济全球化的背景下&#xff0c;政务招商成为了推动地方经济发展的重要引擎。而政务招商系统的出现&#xff0c;更是为这一进程注入了新的活力。它…...

Linux 命令行

这学期是我第一次正式学习 linux &#xff0c;是在 VMware 里创建了 openEuler 的虚拟机练习 linux 的常用命令。 目前主要在学习 linux 的常用命令&#xff0c;因此这篇博客主要介绍一些常用的命令。 本文将持续更新… 阅读建议 Linux 是一个倒置的树结构&#xff08;文件系…...

每日一题:单例模式

每日一题&#xff1a;单例模式 ❝ 单例模式是确保一个类只有一个实例&#xff0c;并提供一个全局访问点 1.饿汉式&#xff08;静态常量&#xff09; 特点&#xff1a;在类加载时就创建了实例。优点&#xff1a;简单易懂&#xff0c;线程安全。缺点&#xff1a;无论是否使用&…...