bootstrap 5放弃jquery依赖、升级popper.js至v2、.col-*类全局生效且.row默认flex-wrap;bootstrap 4保留jquery兼容、使用popper v1、.col-6仅超小屏生效且.row默认flex-nowrap。

如果您正在为Flask或任意现代Web项目选择前端框架版本,却在Bootstrap 4与Bootstrap 5之间难以取舍,则需关注二者在依赖、布局、组件、定制和兼容性等维度的实质性差异。以下是针对这些差异展开的具体对比:
一、JavaScript依赖与运行时行为
Bootstrap 5彻底放弃对jQuery的绑定,所有交互组件(如Modal、Dropdown、Toast)均以原生JavaScript重写,不再支持任何以$()开头的jQuery调用语法;而Bootstrap 4仍保留jQuery兼容层,允许混合使用原生JS与jQuery API。
1、在Bootstrap 4中,模态框可通过$('#myModal').modal('show')直接触发;
2、在Bootstrap 5中,必须改用new bootstrap.Modal(document.getElementById('myModal')).show();
3、若项目中其他插件仍依赖jQuery,可继续引入jQuery,但Bootstrap自身不再将其列为运行前提;
4、Popper.js由v1升级至v2,createPopper()的参数结构(如placement、modifiers)已变更,需同步适配。
二、栅格系统与Flex工具类逻辑
Bootstrap 5延续Flexbox基础,但调整了默认行为与断点语义:.col-*类现在全局生效而非仅限超小屏,且.row默认启用flex-wrap: wrap;而Bootstrap 4中.flex-nowrap为默认,需显式添加类才能换行。
1、Bootstrap 4中,.col-6仅在.col-md-6才在中屏及以上生效;
2、Bootstrap 5中,.col-6表示“所有断点下均占一半宽度”,.col-md-6语义不变但底层计算逻辑重构;
3、间距工具类从.mx-3扩展为.gx-3(水平)与.gy-3(垂直)独立控制;
4、.container-fluid在Bootstrap 5中默认带padding,需手动加.px-0还原Bootstrap 4视觉表现。
三、组件结构与HTML标记变更
多个核心组件的DOM结构、data属性命名及必要类名发生不兼容更新,迁移时需逐项检查HTML模板,不能仅靠CSS类替换完成升级。
1、alert组件中,data-dismiss="alert"已被data-bs-dismiss="alert"取代,遗漏bs-前缀将导致关闭功能静默失效;
2、模态框触发按钮的data-target="#id"必须改为data-bs-target="#id";
3、card组件中,.card-block被.card-body完全替代,且.card-header不再自动附带背景色;
4、表单验证样式交由:valid/:invalid伪类驱动,若通过JS调用setCustomValidity(),必须同步调用reportValidity()才能激活.is-valid类。
四、CSS定制机制与预处理器要求
Bootstrap 5强制采用Dart Sass作为唯一支持的Sass编译器,并全面引入CSS自定义属性(CSS Custom Properties),变量体系重构后与Bootstrap 4的LibSass变量不兼容。
1、Bootstrap 4使用LibSass,变量如$spacer可直接覆盖;
2、Bootstrap 5要求Dart Sass,且$spacers为map结构,若仅覆盖$spacer而不同步更新$spacers映射,会导致mt-5等间距类缩放异常;
3、所有CSS变量均以--bs-前缀声明,例如--bs-primary,支持运行时动态修改主题;
4、深色模式切换能力内建于变量体系,无需额外插件即可通过媒体查询或JS切换。
五、浏览器支持与图标资源供给
Bootstrap 5明确放弃IE 11及以下版本支持,聚焦现代浏览器标准;同时内置SVG图标库Bootstrap Icons,而Bootstrap 4未提供官方图标方案,需第三方引入。
1、Bootstrap 4官方支持IE 11,其Flexbox实现包含大量polyfill与回退逻辑;
2、Bootstrap 5移除全部IE相关代码路径,若项目用户仍有IE 11访问需求,不可选用Bootstrap 5;
3、Bootstrap 4推荐Font Awesome等第三方图标库,无内置资源;
4、Bootstrap 5提供bootstrap-icons包,图标以SVG inline方式嵌入,支持width、height及currentColor着色。











