【前端】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)**用于监视页面的滚动位置,并自动更新导航栏中的激活状态。这在单页面应用或长网页中尤为实用,可以帮助用户知道当前所在的位置。
首先,需要有一个固定的导航栏,滚动监听的目标是一个滚动区域(如 body 或 div)。
基本结构
<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 工具和组件,还内置了丰富的 JavaScript 组件和插件。这些 JavaScript 组件能够增强网页的交互性,让开发者在不编写大量 JavaScript 代码的情况下快速实现各种动态效果。Bootstrap 的 JavaScript 组件基于 jQuery…...
部署 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、原理概述 交换机之间通过以太网电接口对接时需要协商一些接口参数,比如速率、双工模式等。交换机的全双工是指交换机在发送数据的同时也能够接收数据,两者同时进行。就如平时打电话一样,说话的同时也能够听到对方的声音。而半双工指在同一…...
第4天:用户界面和布局补充材料——`activity_login.xml`解读
下面是对“第4天:用户界面和布局补充材料”该文学习的更深层次的补充材料,对 activity_login.xml 文件的理解。 下面对activity_login.xml’ 文件中每一行进行详细解释: <?xml version"1.0" encoding"utf-8"?>声…...
《深入浅出LLM基础篇》(五):Propmt工程优化
🎉AI学习星球推荐: GoAI的学习社区 知识星球是一个致力于提供《机器学习 | 深度学习 | CV | NLP | 大模型 | 多模态 | AIGC 》各个最新AI方向综述、论文等成体系的学习资料,配有全面而有深度的专栏内容,包括不限于 前沿论文解读、…...
基于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的平面场景图,在原点O(0, 0)点处有一个机器人,它只能在该平面场景范围内活动。图中有12个不同形状的区域是机器人不能与之发生碰撞的障碍物,障碍物的数学描述如下表:…...
Linux驱动开发——设备树
文章目录 1 什么是设备树?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 下载地址:https://artifacts.elastic.co/downloads/elasticsearch/el…...
一、PyCharm 基本快捷键总结
PyCharm 快捷键 前言一、编辑(Editing)二、查找/替换(Replace)三、运行(Running)四、重构(Refactoring)五、基本(General) 前言 下面我们将学习一些 Pycharm 中的快捷键来帮我们更好的使用工具。 一、编辑(Editing) 快捷键快捷键…...
Windows系统C盘爆满了,如何清理?
Windows系统C盘爆满了,如何清理? 大家好,我是秋意零。 相信使用过Windows系统的朋友,都见过C盘那道靓丽的 “红色风景线” ! 我自己的Win10系统,已经使用了4-5年时间了。最近频频出现"红色风景线&q…...
【C++】踏上C++学习之旅(一):初识C++和命名空间
文章目录 前言1. 初识C2. C的发展阶段2. 命名空间2.1 为什么要有命名空间?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、导入测试和训练数据集,定义模型ÿ…...
深度学习——线性神经网络(三、线性回归的简洁实现)
目录 3.1 生成数据集3.2 读取数据集3.3 定义模型3.4 初始化模型参数3.5 定义损失函数3.6 定义优化算法3.7 训练 在上一节中,我们通过张量来自定义式地进行数据存储和线性代数运算,并通过自动微分来计算梯度。实际上,由于数据迭代器、损失函数…...
本地部署 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 进行代码拉取或代码提交时, 若我们的远程代码仓库是 http协议的链接时,就是就会提示我们进行账号密码的登录。 每次都要登录,这未免有些麻烦。 本文介绍一下免密登录的配置。解决方案 1 执行…...
华为OD机试真题-编码能力提升-2024年OD统一考试(E卷)
最新华为OD机试考点合集:华为OD机试2024年真题题库(E卷+D卷+C卷)_华为od机试题库-CSDN博客 每一题都含有详细的解题思路和代码注释,精编c++、JAVA、Python三种语言解法。帮助每一位考生轻松、高效刷题。订阅后永久可看,持续跟新。 题目描述 为了提升软件编码能力,小…...
高被引算法GOA优化VMD,结合Transformer-SVM的轴承诊断,保姆级教程!
本期采用2023年瞪羚优化算法优化VMD,并结合Transformer-SVM实现轴承诊断,算是一个小创新方法了。需要水论文的童鞋尽快! 瞪羚优化算法之前推荐过,该成果于2023年发表在计算机领域三区SCI期刊“Neural Computing and Applications”…...
半小时速通RHCSA
1-7章: #01创建以上目录和文件结构,并将/yasuo目录拷贝4份到/目录下 #02查看系统合法shell #03查看系统发行版版本 #04查看系统内核版本 #05临时修改主机名 #06查看系统指令的查找路径 #07查看passwd指令的执行路径 #08为/yasuo/ssh_config文件在/mulu目录下创建软链…...
人工智能和机器学习之线性代数(一)
人工智能和机器学习之线性代数(一) 人工智能和机器学习之线性代数一将介绍向量和矩阵的基础知识以及开源的机器学习框架PyTorch。 文章目录 人工智能和机器学习之线性代数(一)基本定义标量(Scalar)向量&a…...
Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...
JDK 17 新特性
#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持,不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的ÿ…...
UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)
UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化…...
Scrapy-Redis分布式爬虫架构的可扩展性与容错性增强:基于微服务与容器化的解决方案
在大数据时代,海量数据的采集与处理成为企业和研究机构获取信息的关键环节。Scrapy-Redis作为一种经典的分布式爬虫架构,在处理大规模数据抓取任务时展现出强大的能力。然而,随着业务规模的不断扩大和数据抓取需求的日益复杂,传统…...
Linux 内存管理调试分析:ftrace、perf、crash 的系统化使用
Linux 内存管理调试分析:ftrace、perf、crash 的系统化使用 Linux 内核内存管理是构成整个内核性能和系统稳定性的基础,但这一子系统结构复杂,常常有设置失败、性能展示不良、OOM 杀进程等问题。要分析这些问题,需要一套工具化、…...
第2课 SiC MOSFET与 Si IGBT 静态特性对比
2.1 输出特性对比 2.2 转移特性对比 2.1 输出特性对比 器件的输出特性描述了当温度和栅源电压(栅射电压)为某一具体数值时,漏极电流(集电极电流...
python打卡day47
昨天代码中注意力热图的部分顺移至今天 知识点回顾: 热力图 作业:对比不同卷积层热图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import D…...
电脑定时关机工具推荐
软件介绍 本文介绍一款轻量级的电脑自动关机工具,无需安装,使用简单,可满足定时关机需求。 工具简介 这款关机助手是一款无需安装的小型软件,文件体积仅60KB,下载后可直接运行,无需复杂配置。 使用…...
C++ 使用 ffmpeg 解码 rtsp 流并获取每帧的YUV数据
一、简介 FFmpeg 是一个开源的多媒体处理框架,非常适用于处理音视频的录制、转换、流化和播放。 二、代码 示例代码使用工作线程读取rtsp视频流,自动重连,支持手动退出,解码并将二进制文件保存下来。 注意: 代…...
青少年编程与数学 01-011 系统软件简介 08 Windows操作系统
青少年编程与数学 01-011 系统软件简介 08 Windows操作系统 1. Windows操作系统的起源与发展1.1 早期版本(1985-1995)1.2 Windows 9x系列(1995-2000)1.3 Windows NT系列(1993-2001)1.4 Windows XP及以后版…...
