bootstrap、bulma、foundation-sites 和 materialize-css 都是前端开发中经典的 CSS 框架,旨在加速界面构建并提供一致的视觉风格。bootstrap 拥有最丰富的组件库和广泛的社区支持,适合快速构建响应式后台或通用网站。bulma 基于 Flexbox,纯 CSS 实现,轻量且类名语义化,适合偏好自定义交互逻辑的项目。foundation-sites 强调语义化和无障碍访问,适合复杂的企业级应用,但学习曲线较陡。materialize-css 实现了 Google Material Design 规范,但维护频率已显著降低,适合旧项目维护或特定设计风格需求。
这四个框架都试图解决相同的问题:如何快速构建响应式、美观的 Web 界面。但它们在技术实现、依赖管理和维护状态上有显著区别。对于架构师而言,理解这些底层差异比单纯看文档更重要。
网格系统是 CSS 框架的骨架。虽然它们都提供行列结构,但类名和底层实现不同。
bootstrap 使用基于 flexbox 的 12 列网格,类名简洁。
<!-- bootstrap 5 -->
<div class="container">
<div class="row">
<div class="col-md-6">左半部分</div>
<div class="col-md-6">右半部分</div>
</div>
</div>
bulma 同样基于 flexbox,但使用 columns 和 column 命名,语义更直观。
<!-- bulma -->
<div class="container">
<div class="columns">
<div class="column is-half">左半部分</div>
<div class="column is-half">右半部分</div>
</div>
</div>
foundation-sites 使用 grid-x 和 cell,支持更复杂的嵌套和对齐控制。
<!-- foundation-sites -->
<div class="grid-container">
<div class="grid-x grid-padding-x">
<div class="cell medium-6">左半部分</div>
<div class="cell medium-6">右半部分</div>
</div>
</div>
materialize-css 类名与 Bootstrap 类似,但基于旧版 flex 实现。
<!-- materialize-css -->
<div class="container">
<div class="row">
<div class="col s12 m6">左半部分</div>
<div class="col s12 m6">右半部分</div>
</div>
</div>
这是架构决策中最关键的分歧点。是否需要 jQuery?是否内置交互逻辑?
bootstrap (v5+) 移除了 jQuery 依赖,使用原生 JavaScript 和 Popper.js。
// bootstrap 5: 原生 JS 初始化模态框
const modal = new bootstrap.Modal(document.getElementById('myModal'));
modal.show();
bulma 仅仅是 CSS 框架,不包含 JavaScript 组件。
// bulma: 需手动 toggle class
const navbar = document.querySelector('.navbar');
navbar.classList.toggle('is-active');
foundation-sites 严重依赖 jQuery,这是现代项目的主要负担。
// foundation-sites: 必须引入 jQuery
$(document).foundation();
$('#myModal').foundation('open');
materialize-css 同样依赖 jQuery,且更新缓慢。
// materialize-css: jQuery 依赖
M.Modal.init(document.querySelectorAll('.modal'));
所有框架都支持 Sass 定制,但变量命名和覆盖方式不同。
bootstrap 提供完整的 Sass 映射表,支持主题切换。
// bootstrap: 覆盖变量
$primary: #333;
@import "bootstrap/scss/bootstrap";
bulma 变量定义简单,适合快速修改颜色。
// bulma: 定义初始变量
$primary: #333;
@import "bulma/bulma";
foundation-sites 配置文件复杂,允许细粒度控制。
// foundation-sites: 导入设置文件
@import 'settings/settings';
@import 'foundation';
@include foundation-everything;
materialize-css 提供标准 Sass 变量,但定制文档较少。
// materialize-css: 变量覆盖
$primary-color: color("materialize-red", "lighten-2");
@import "materialize";
这是选择框架时最容易被忽视但最致命的因素。
bootstrap 处于活跃维护状态,定期发布安全补丁和新版本。
bulma 维护稳定,但功能更新较慢,专注于 CSS 核心。
foundation-sites 官方已宣布不再积极开发新功能,仅维持安全修复。
materialize-css 维护已基本停滞,GitHub Issues 堆积严重。
| 特性 | bootstrap | bulma | foundation-sites | materialize-css |
|---|---|---|---|---|
| JS 依赖 | 无 (v5+) | 无 | jQuery | jQuery |
| 网格系统 | Row/Col | Columns/Column | Grid-X/Cell | Row/Col |
| 组件丰富度 | ⭐⭐⭐⭐⭐ | ⭐⭐ (仅 CSS) | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
| 维护状态 | 活跃 | 稳定 | 维护模式 | 停滞 |
| 定制难度 | 中 | 低 | 高 | 中 |
bootstrap 是目前的“安全牌”。如果你的团队需要快速交付,且不希望花费时间在基础组件上,它是首选。v5 版本移除 jQuery 后,它与现代前端框架(React/Vue)的兼容性已大幅改善。
bulma 适合“轻量级”架构。如果你使用 React 或 Vue 管理状态,不需要框架提供 JS 组件,Bulma 的类名系统非常干净,不会污染全局命名空间,且易于通过 Sass 定制。
foundation-sites 和 materialize-css 属于“遗留技术”。除非你在维护旧系统,否则不建议在新架构中引入。Foundation 的 jQuery 依赖和 Materialize 的停滞维护都会给未来带来不必要的技术债务。
最终结论:对于 2024 年及以后的新项目,优先考虑 bootstrap (需要完整组件) 或 bulma (需要纯 CSS)。如果追求更现代的实用优先方案,建议评估 tailwindcss。
选择 bootstrap 如果你需要开箱即用的完整组件库(如模态框、下拉菜单),且希望依赖强大的社区生态解决常见问题。它适合大多数通用 Web 项目,特别是后台管理系统,但需注意其默认样式较为普遍,定制需要覆盖较多 Sass 变量。
选择 bulma 如果你偏好纯 CSS 方案,不希望引入沉重的 JavaScript 依赖。它非常适合需要高度自定义交互行为的项目,或者你打算搭配 Vue/React 等现代框架自行管理状态,但其缺少内置 JS 组件意味着你需要自己编写交互逻辑。
选择 foundation-sites 如果你的项目对无障碍访问(Accessibility)有严格要求,且需要极高的布局灵活性。它适合大型企业级应用,但鉴于其维护频率降低,需评估长期维护风险,且必须接受其依赖 jQuery 的现状。
选择 materialize-css 仅当你必须严格遵循旧版 Material Design 视觉规范且无法使用 MUI 等现代替代方案时。鉴于其维护已近乎停滞,新项目不建议使用,应优先考虑 mui 或 tailwindcss 配合 Material 设计令牌。
Sleek, intuitive, and powerful front-end framework for faster and easier web development.
Explore Bootstrap docs »
Report bug
·
Request feature
·
Blog
Our default branch is for development of our Bootstrap 5 release. Head to the v4-dev branch to view the readme, documentation, and source code for Bootstrap 4.
Several quick start options are available:
git clone https://github.com/twbs/bootstrap.gitnpm install bootstrap@v5.3.8yarn add bootstrap@v5.3.8bun add bootstrap@v5.3.8composer require twbs/bootstrap:5.3.8Install-Package bootstrap Sass: Install-Package bootstrap.sassRead the Getting started page for information on the framework contents, templates, examples, and more.
Within the download you’ll find the following directories and files, logically grouping common assets and providing both compiled and minified variations.
bootstrap/
├── css/
│ ├── bootstrap-grid.css
│ ├── bootstrap-grid.css.map
│ ├── bootstrap-grid.min.css
│ ├── bootstrap-grid.min.css.map
│ ├── bootstrap-grid.rtl.css
│ ├── bootstrap-grid.rtl.css.map
│ ├── bootstrap-grid.rtl.min.css
│ ├── bootstrap-grid.rtl.min.css.map
│ ├── bootstrap-reboot.css
│ ├── bootstrap-reboot.css.map
│ ├── bootstrap-reboot.min.css
│ ├── bootstrap-reboot.min.css.map
│ ├── bootstrap-reboot.rtl.css
│ ├── bootstrap-reboot.rtl.css.map
│ ├── bootstrap-reboot.rtl.min.css
│ ├── bootstrap-reboot.rtl.min.css.map
│ ├── bootstrap-utilities.css
│ ├── bootstrap-utilities.css.map
│ ├── bootstrap-utilities.min.css
│ ├── bootstrap-utilities.min.css.map
│ ├── bootstrap-utilities.rtl.css
│ ├── bootstrap-utilities.rtl.css.map
│ ├── bootstrap-utilities.rtl.min.css
│ ├── bootstrap-utilities.rtl.min.css.map
│ ├── bootstrap.css
│ ├── bootstrap.css.map
│ ├── bootstrap.min.css
│ ├── bootstrap.min.css.map
│ ├── bootstrap.rtl.css
│ ├── bootstrap.rtl.css.map
│ ├── bootstrap.rtl.min.css
│ └── bootstrap.rtl.min.css.map
└── js/
├── bootstrap.bundle.js
├── bootstrap.bundle.js.map
├── bootstrap.bundle.min.js
├── bootstrap.bundle.min.js.map
├── bootstrap.esm.js
├── bootstrap.esm.js.map
├── bootstrap.esm.min.js
├── bootstrap.esm.min.js.map
├── bootstrap.js
├── bootstrap.js.map
├── bootstrap.min.js
└── bootstrap.min.js.map
We provide compiled CSS and JS (bootstrap.*), as well as compiled and minified CSS and JS (bootstrap.min.*). Source maps (bootstrap.*.map) are available for use with certain browsers’ developer tools. Bundled JS files (bootstrap.bundle.js and minified bootstrap.bundle.min.js) include Popper.
Have a bug or a feature request? Please first read the issue guidelines and search for existing and closed issues. If your problem or idea is not addressed yet, please open a new issue.
Bootstrap’s documentation, included in this repo in the root directory, is built with Astro and publicly hosted on GitHub Pages at https://getbootstrap.com/. The docs may also be run locally.
Documentation search is powered by Algolia's DocSearch.
npm install to install the Node.js dependencies, including Astro (the site builder).npm run test (or a specific npm script) to rebuild distributed CSS and JavaScript files, as well as our docs assets./bootstrap directory, run npm run docs-serve in the command line.Learn more about using Astro by reading its documentation.
You can find all our previous releases docs on https://getbootstrap.com/docs/versions/.
Previous releases and their documentation are also available for download.
Please read through our contributing guidelines. Included are directions for opening issues, coding standards, and notes on development.
Moreover, if your pull request contains JavaScript patches or features, you must include relevant unit tests. All HTML and CSS should conform to the Code Guide, maintained by Mark Otto.
Editor preferences are available in the editor config for easy use in common text editors. Read more and download plugins at https://editorconfig.org/.
Get updates on Bootstrap’s development and chat with the project maintainers and community members.
irc.libera.chat server, in the #bootstrap channel.bootstrap-5).bootstrap on packages which modify or add to the functionality of Bootstrap when distributing through npm or similar delivery mechanisms for maximum discoverability.For transparency into our release cycle and in striving to maintain backward compatibility, Bootstrap is maintained under the Semantic Versioning guidelines. Sometimes we screw up, but we adhere to those rules whenever possible.
See the Releases section of our GitHub project for changelogs for each release version of Bootstrap. Release announcement posts on the official Bootstrap blog contain summaries of the most noteworthy changes made in each release.
Mark Otto
Jacob Thornton
Thanks to BrowserStack for providing the infrastructure that allows us to test in real browsers!
Thanks to Netlify for providing us with Deploy Previews!
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]
Thank you to all our backers! 🙏 [Become a backer]
Code and documentation copyright 2011-2025 the Bootstrap Authors. Code released under the MIT License. Docs released under Creative Commons.