新闻中心
Bootstrap 5导航栏折叠功能失效:数据属性迁移指南

本文详细介绍了从bootstrap 4迁移到bootstrap 5时,导航栏折叠功能失效的常见原因及解决方案。核心在于bootstrap 5将数据属性前缀从`data-`更改为`data-bs-`。教程提供了具体的代码示例,帮助开发者正确配置导航栏的`data-bs-toggle`和`data-bs-target`属性,确保折叠功能正常运作,并强调了版本兼容性和脚本引入的重要性。
在开发Web应用时,导航栏(N*bar)的折叠功能是响应式设计中不可或缺的一部分,尤其是在移动设备上。Bootstrap框架提供了便捷的组件来实现这一功能。然而,从Bootstrap 4升级到Bootstrap 5时,开发者可能会遇到导航栏折叠按钮失效的问题。这通常是由于Bootstrap版本之间数据属性(data attributes)的命名约定发生了变化。
Bootstrap 4与Bootstrap 5数据属性的关键差异
Bootstrap 5为了避免与第三方库(如jQuery UI)的data属性命名冲突,并更好地遵循HTML Living Standard,将其自定义数据属性的前缀从data-统一更改为data-bs-。这意味着所有用于控制J*aScript行为的HTML属性都需要进行相应的更新。
对于导航栏折叠功能,主要涉及以下两个属性:
- data-toggle: 在Bootstrap 4中,这个属性用于指定触发的J*aScript行为类型,例如data-toggle="collapse"表示触发折叠功能。
- data-target: 在Bootstrap 4中,这个属性用于指定要操作的目标元素的ID,例如data-target="#n*barN*AltMarkup"表示操作ID为n*barN*AltMarkup的元素。
在Bootstrap 5中,这两个属性必须更新为:
- data-bs-toggle: 对应Bootstrap 4的data-toggle。
- data-bs-target: 对应Bootstrap 4的data-target。
如果您的代码仍然使用Bootstrap 4的data-toggle和data-target属性,但在页面中引入的是Bootstrap 5的J*aScript文件,那么折叠功能将无法正常工作。
正确配置Bootstrap 5导航栏折叠
要解决导航栏折叠失效的问题,只需将HTML中触发按钮上的data-toggle和data-target属性替换为data-bs-toggle和data-bs-target。
以下是修改前(Bootstrap 4风格)和修改后(Bootstrap 5风格)的代码对比:
来画数字人|直播|
来画数字人自动化|直播|,无需请真人主播,即可实现24小时|直播|,无缝衔接各大|直播|平台。
57
查看详情
Bootstrap 4 风格 (失效于Bootstrap 5):
<button class="n*bar-toggler collapsed" type="button" data-toggle="collapse" data-target="#n*barN*AltMarkup" aria-controls="n*barN*AltMarkup" aria-expanded="false" aria-label="Toggle n*igation">
<span class="n*bar-toggler-icon"></span>
</button>Bootstrap 5 风格 (正确):
<button class="n*bar-toggler collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#n*barN*AltMarkup" aria-controls="n*barN*AltMarkup" aria-expanded="false" aria-label="Toggle n*igation">
<span class="n*bar-toggler-icon"></span>
</button>请注意,n*bar-collapse类所在的div元素的id属性(例如id="n*barN*AltMarkup")保持不变,因为它只是一个标识符,不受数据属性前缀变化的影响。
完整示例代码
以下是一个完整的Bootstrap 5导航栏示例,其中包含了正确的data-bs-toggle和data-bs-target属性,确保折叠功能正常运作:
<!doctype html>
<html lang="sr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, user-scalable=false, initial-scale=1">
<link rel="icon" href="{{ url_for('static', path='/images/f*icon.png') }}" sizes=&q
uot;32x32" />
<!-- Bootstrap CSS -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/bootstrap.min.css" integrity="sha384-Zenh87qX5JnK2Jl0vWa8Ck2rdkQ2Bzep5IDxbcnCeuOxjzrPF/et3URy9Bv1WTRi" crossorigin="anonymous">
<title>N*bar Test</title>
</head>
<body>
<!-- 推荐引入Bootstrap Bundle,它包含了Popper.js -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-OERcA2EqjJCMA+/3y+gxIOqMEjwtxJY7qPCqsdltbNJuaOe923+mo//f6V8Qbsw3" crossorigin="anonymous"></script>
<!-- 如果您需要jQuery,可以引入,但Bootstrap 5不再依赖jQuery -->
<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
<div class="container">
<n* class="n*bar n*bar-expand-lg n*bar-light bg-light">
<button class="n*bar-toggler collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#n*barN*AltMarkup" aria-controls="n*barN*AltMarkup" aria-expanded="false" aria-label="Toggle n*igation">
<span class="n*bar-toggler-icon"></span>
</button>
<div class="n*bar-collapse collapse" id="n*barN*AltMarkup">
<div class="n*bar-n*">
<a class="n*-item n*-link active" href="/">Home</a>
<a class="n*-item n*-link" href="/link1">Link 1</a>
<a class="n*-item n*-link" href="/link2">Link 2</a>
<div class="dropdown">
<a class="n*-item n*-link dropdown-toggle" href="#" role="button" id="dropdownMenuReports" data-bs-toggle="dropdown" aria-expanded="false">
Reports
</a>
<ul class="dropdown-menu" aria-labelledby="dropdownMenuReports">
<li><a class="dropdown-item" href="/reports/reminders">Reminders - Send</a></li>
<li><a class="dropdown-item" href="/reports/reminders?render_only">Reminders - Display Only</a></li>
</ul>
</div>
</div>
</div>
</n*>
</div>
</body>
</html>注意事项:
- Bootstrap版本一致性: 确保您引入的CSS和J*aScript文件都属于Bootstrap 5版本。混合使用不同版本的资源是常见的问题来源。
- J*aScript引入: Bootstrap 5的J*aScript组件(包括导航栏折叠)不再依赖jQuery。推荐引入bootstrap.bundle.min.js,它包含了Bootstrap的J*aScript插件及其所需的Popper.js库。如果您仍然需要jQuery用于其他目的,可以继续引入,但它不是Bootstrap 5组件运行的必要条件。
- 其他组件: 除了导航栏,其他Bootstrap组件如模态框(Modal)、下拉菜单(Dropdown)等也遵循相同的data-bs-前缀命名规则。在迁移过程中,请务必检查并更新所有相关的data-属性。
- *`aria-属性**:aria-controls、aria-expanded和aria-label`等ARIA(Accessible Rich Internet Applications)属性是用于提高网页可访问性的,它们不受Bootstrap版本更新的影响,应保持不变。
总结
从Bootstrap 4迁移到Bootstrap 5时,导航栏折叠功能失效的核心原因在于数据属性前缀的变化。通过将data-toggle和data-target更新为data-bs-toggle和data-bs-target,并确保正确引入Bootstrap 5的J*aScript文件,即可轻松解决此问题。理解这些版本间的差异对于平稳升级和维护基于Bootstrap的Web项目至关重要。
以上就是Bootstrap 5导航栏折叠功能失效:数据属性迁移指南的详细内容,更多请关注其它相关文章!
# javascript
# css
# 是一个
# 的是
# 包含了
# 不受
# interne
# app
# npm
# bootstrap
# js
# html
# jquery
# java
# 新年营销推广手段
# 钦州智能网络营销推广
# 旅游网站建设策划内容
# 建网站推广成本高吗知乎
# 朔州seo推广价位查询
# 镇坪短视频seo效果
# 昌乐网站推广关键词费用
# 客栈网络推广网站
# 一个新网站推广多少钱
# 广元seo培训
# 但在
# 只需
# 如果您
# 是在
# 这一
# 您的
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
创客贴用户入口官网登录 创客贴网页版电脑版系统
电脑IP地址怎么查 查看本机IP地址的几种方法
处理动态列数据:J*a ArrayList的正确初始化与字符累加教程
J*aScript生成器_j*ascript异步迭代
2025AO3夸克浏览器通道_AO3手机HTTPS安全入口分享
苹果手机如何防止被恶意App追踪
PHP中高效并行检查多链接状态的教程
c++如何实现单例设计模式_c++线程安全的单例模式写法
天眼查怎么看公司融资情况 天眼查企业融资历史查询步骤【攻略】
Win11怎么设置鼠标指针速度_Win11提高鼠标指针精确度选项
AO3最新镜像入口 Archive of Our Own官方平台访问
Yandex搜索引擎一键访问入口_俄罗斯Yandex官网免登录
腾讯视频怎么举报不良内容_腾讯视频内容举报流程与违规信息处理方法
怎么在html里运行vbs脚本_html中运行vbs脚本方法【教程】
在J*a中如何开发简易电子商务商品管理系统_商品管理系统项目实战解析
sublime如何处理大型CSV文件的列对齐_sublime高级表格编辑插件指南
AO3中文官网链接_AO3网页版稳定镜像站
铁路12306官网网页端快速入口 铁路12306官方首页登录教程
深入理解Go语言中的指针类型:以*string为例
微信客户端如何收红包_微信客户端接收红包使用教程
Win10快速启动功能利弊分析 Win10开启或关闭快速启动教程【技巧】
淘宝网网页版登录入口 淘宝官方网页版快捷登录
C#使用XPath查询节点时出错? 常见语法错误与调试技巧
sublime如何配置Go语言开发环境_sublime搭建Golang编译运行系统
c++如何实现一个简单的ECS框架_c++数据驱动设计与游戏开发
构建轻量级网站内部消息系统:Formspree 集成指南
如何在 Windows 11 中启动游戏手柄设置
微博网页版直接访问 微博网页版账号管理快速入口
Go语言中JSON数据解码与字段访问指南
微博网页版官方账号登录 微博网页版内容浏览使用指南
win11 arm版怎么安装 M1/M2 Mac虚拟机安装ARM win11的方法
2025俄罗斯Yandex最新入口 官方网站地址及浏览器下载指南
微博网页版怎么开启两步验证_微博网页版账号安全两步验证设置方法
J*a实现学校排课程序_面向对象结构化项目示例
Kafka Streams中基于消息头条件过滤消息的实现指南
AI泡沫首次被“刺破”:GPU十年都无法存活!
c++如何使用Catch2编写单元测试_c++简洁易用的BDD风格测试框架
天猫双十一预售商品怎么退款_天猫双十一预售退款操作指南
抖音DOU+怎么投最有效 抖音付费推广的ROI提升技巧
Golang如何优化CPU绑定任务分配策略_Golang CPU任务分配优化实践
c++20的std::jthread是什么_c++可中断线程与RAII式管理
如何使用J*aScript精确选择并批量修改特定父元素下子链接的样式
CSS条件样式无法按设备触发怎么排查_media条件语句正确设置解决触发问题
Gmail邮箱申请注册直达_Gmail邮箱免费注册PC版官网入口2025
HTML转PPT成品工具有哪些?HTML网页转PPT成品工具大全
qq邮箱日历功能怎么用_创建日程与会议邀请的技巧
Web Components中自定义开关组件状态同步的常见陷阱与解决方案
J*a应用集成GitHub CLI与API认证指南
一加 14R 快充无反应_一加 14R 充电优化
正确连接J*aScript到HTML实现可点击图片与自定义事件处理


2025-11-29
浏览次数:次
返回列表
uot;32x32" />
<!-- Bootstrap CSS -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/bootstrap.min.css" integrity="sha384-Zenh87qX5JnK2Jl0vWa8Ck2rdkQ2Bzep5IDxbcnCeuOxjzrPF/et3URy9Bv1WTRi" crossorigin="anonymous">
<title>N*bar Test</title>
</head>
<body>
<!-- 推荐引入Bootstrap Bundle,它包含了Popper.js -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-OERcA2EqjJCMA+/3y+gxIOqMEjwtxJY7qPCqsdltbNJuaOe923+mo//f6V8Qbsw3" crossorigin="anonymous"></script>
<!-- 如果您需要jQuery,可以引入,但Bootstrap 5不再依赖jQuery -->
<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
<div class="container">
<n* class="n*bar n*bar-expand-lg n*bar-light bg-light">
<button class="n*bar-toggler collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#n*barN*AltMarkup" aria-controls="n*barN*AltMarkup" aria-expanded="false" aria-label="Toggle n*igation">
<span class="n*bar-toggler-icon"></span>
</button>
<div class="n*bar-collapse collapse" id="n*barN*AltMarkup">
<div class="n*bar-n*">
<a class="n*-item n*-link active" href="/">Home</a>
<a class="n*-item n*-link" href="/link1">Link 1</a>
<a class="n*-item n*-link" href="/link2">Link 2</a>
<div class="dropdown">
<a class="n*-item n*-link dropdown-toggle" href="#" role="button" id="dropdownMenuReports" data-bs-toggle="dropdown" aria-expanded="false">
Reports
</a>
<ul class="dropdown-menu" aria-labelledby="dropdownMenuReports">
<li><a class="dropdown-item" href="/reports/reminders">Reminders - Send</a></li>
<li><a class="dropdown-item" href="/reports/reminders?render_only">Reminders - Display Only</a></li>
</ul>
</div>
</div>
</div>
</n*>
</div>
</body>
</html>