
本文详细介绍了从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 5为了避免与第三方库(如jQuery UI)的data属性命名冲突,并更好地遵循HTML Living Standard,将其自定义数据属性的前缀从data-统一更改为data-bs-。这意味着所有用于控制J*aScript行为的HTML属性都需要进行相应的更新。
对于导航栏折叠功能,主要涉及以下两个属性:
在Bootstrap 5中,这两个属性必须更新为:
如果您的代码仍然使用Bootstrap 4的data-toggle和data-target属性,但在页面中引入的是Bootstrap 5的J*aScript文件,那么折叠功能将无法正常工作。
要解决导航栏折叠失效的问题,只需将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 4迁移到Bootstrap 5时,导航栏折叠功能失效的核心原因在于数据属性前缀的变化。通过将data-toggle和data-target更新为data-bs-toggle和data-bs-target,并确保正确引入Bootstrap 5的J*aScript文件,即可轻松解决此问题。理解这些版本间的差异对于平稳升级和维护基于Bootstrap的Web项目至关重要。
以上就是Bootstrap 5导航栏折叠功能失效:数据属性迁移指南的详细内容,更多请关注其它相关文章!
相关文章:
Composer的 archive 命令怎么用_快速打包你的PHP项目及其Composer依赖
在FastAPI中利用lifespan与依赖注入高效管理Redis连接池
PHP表单提交后函数重复执行的解决方案:管理$_POST数据
动漫共和国防屏蔽稳定域名-动漫共和国官方正版直达通道
内存检查:在VS Code中调试C++时的内存视图
包子漫画官方网站阅读入口-包子漫画在线漫画官网直达链接
Lar*el Eloquent:高效统计带条件关联模型的数量
微信网页版官方入口直达 微信网页版网页版登录使用方法
微信网页版扫码登录入口 微信网页版二维码登录入口
Lar*el Eloquent:基于关联关系是否存在进行父模型过滤与删除
Yandex浏览器官方网页版入口 Yandex浏览器最新版官网
CSS布局中意外空白:解决padding-top导致的顶部间距问题
J*a应用集成GitHub CLI与API认证指南
离线运行Go语言之旅:本地部署与GOPATH配置指南
邮政编码查询不到怎么办_邮政编码查询不到的常见原因与对策
Composer的 "conflict" 字段有什么用_如何声明不兼容的包以避免依赖冲突
将HTML动态表格多行数据保存到Google Sheet的教程
京东京造J1和网易云音乐氧气真无线有什么不同_国产电商蓝牙耳机音质对比
漫蛙2正版漫画站 漫蛙2网页版快速访问入口
Surface怎么安装系统 微软Surface Pro U盘重装win11教程
新手怎么开始学化妆 零基础化妆入门教程
漫蛙漫画官方主页入口 漫蛙MANWA网页直达访问链接
网易大神怎么保存别人动态的图片_网易大神动态图片保存方法
邮编格式怎么匹配地址_根据邮编格式快速匹配详细地址的技巧
taptap防沉迷怎么解除 taptap解除健康系统限制说明【2025最新】
抖音极速版最新版本 抖音极速版官方下载地址
优化 Jest 模拟:强制未实现函数抛出错误以提升测试效率
电脑屏幕颜色不舒服怎么办_Windows夜间模式与色彩校准教程【护眼技巧】
在Go语言中利用后缀数组处理多字符串:实现高效文本匹配与自动补全
Win10文件资源管理器“此电脑”分组怎么关 Win10恢复经典视图【技巧】
天猫2025双十一0点秒杀攻略 天猫爆款抢购时间
J*aScript教程:根据元素文本内容动态设置背景色
Pandas DataFrame:高效添加条件计算列
支付宝如何管理隐私设置_支付宝隐私保护的配置技巧
Spring Boot嵌入式服务器与J*a EE:功能支持深度解析
解决Tabulator日期时间排序问题的专业指南
Android Studio计算器C键功能异常排查与修复教程
Yii2模块参数配置指南:正确声明与访问模块级配置
必由学官网快捷入口 必由学网页版在线学习平台
妖精动漫免费平台 妖精动漫官网资源观看网址
漫蛙网页登录入口 漫蛙漫画官方授权网址
如何配置Composer的PSR-4自动加载_Composer自动加载命名空间映射实践教程
2025年云电脑操作系统体验 | 无需本地硬件,随时随地使用高性能PC
文本文档写html代码怎么运行_文本文档html代码运行步骤【教程】
树莓派传感器触发:通过Twilio API发送WhatsApp消息教程
Win10如何开启蓝牙功能_Windows10找不到蓝牙开关解决方法
QQ邮箱网页版入口登录 QQ邮箱在线邮箱官方通道
CSS Flexbox如何实现多行排列_flex-wrap wrap自动换行显示
AO3最新官网入口公告_2025AO3镜像站实时查询方法
J*aScript打印功能_j*ascript输出控制