【前端】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…...
【网络】每天掌握一个Linux命令 - iftop
在Linux系统中,iftop是网络管理的得力助手,能实时监控网络流量、连接情况等,帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...
使用分级同态加密防御梯度泄漏
抽象 联邦学习 (FL) 支持跨分布式客户端进行协作模型训练,而无需共享原始数据,这使其成为在互联和自动驾驶汽车 (CAV) 等领域保护隐私的机器学习的一种很有前途的方法。然而,最近的研究表明&…...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...
系统设计 --- MongoDB亿级数据查询优化策略
系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log,共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题,不能使用ELK只能使用…...
srs linux
下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935,SRS管理页面端口是8080,可…...
从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...
三体问题详解
从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...
ABAP设计模式之---“简单设计原则(Simple Design)”
“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...
Linux离线(zip方式)安装docker
目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1:修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本:CentOS 7 64位 内核版本:3.10.0 相关命令: uname -rcat /etc/os-rele…...
