Bootstrap 5 的第一個 Alpha 版發佈了!
幾個月來我們一直在努力完善 v4 班中開始的各項工作,並對自己的進步感到很滿意,但我們要做的事情還有很多。
我們一直在努力簡化 v4 到 v5 的遷移過程,但也不會駐足於那些已經過時或不再合適的內容上。因此,隨著 v5 的發布我們很高興地宣布,Bootstrap 不再依賴 jQuery,並且 我們放棄了對 Internet Explorer 的支援。我們的重心是建立面向未來的工具,雖然我們還沒有完全做到這一點,但承諾帶來CSS 變數、更快的JavaScript、更少的依賴項和更好的API,對我們來說肯定是正確的選擇。
在更新之前,請記住 v5 現在處於 Alpha 狀態,在我們的第一個 Beta 版本發布之前還會有新的重大變更。我們還沒有完成所有的增刪工作,因此如果你有任何疑問或回饋,請檢查 open issue 和 PR。
推薦學習:《bootstrap影片教學》
#下面我們來深入探討這個新版本的一些亮點!
新外觀
我們以 v4.5.0 版本內部文件首頁的改進為基礎,為其他文件帶來了新的外觀和體驗。我們的文件頁面不再以完整寬度呈現,以提高可讀性,讓我們的網站更像是內容風格而非應用程式風格。此外我們還升級了側邊欄,以使用可擴展的部分(由我們自己的 Collapse 插件提供支援)來實現更快的導航。
我們還打造了一個全新的 Logo!詳情在新版穩定下來後會進一步介紹,現在可以說的就是我們想給 Logo 點新風貌。
受一開始創建這個專案的 CSS 的啟發,我們的 Logo 有一種規則集的感覺——由花括號包圍的樣式。我們很喜歡它,希望大家也能喜歡。隨著我們不斷改進和發布新版本,預期它會逐漸更新到我們的文件和部落格中。
jQuery 和JavaScript
在過去的十五年中,jQuery 為數以百萬計(甚至數以十億計?)的人們帶來了對複雜JavaScript 行為的強大支援。就我個人而言,我將永遠感激它為我提供的能力和支持,它為我編寫前端程式碼、學習新知識並利用社群中的插件提供了很多幫助。也許最重要的是,它永遠改變了 JavaScript,而這也是 jQuery 成功的里程碑。感謝所有 jQuery 貢獻者和維護者,他們為今天的一切付出良多。
得益於前端開發工具和瀏覽器支援的進步,我們現在可以移除 jQuery 這個依賴項了,而使用者並不會有什麼感覺。我們的主要 JavaScript 維護者 @Johann-S 負責了這項艱鉅的工作。 它是這個框架多年來最大的變化之一,也意味著基於 Bootstrap 5 構建的專案將大幅縮減檔案大小,並提升頁面載入速度。
除了移除 jQuery 外,我們還對 v5 中的 JavaScript 做了其他一些更改和增強,主要專注於提升程式碼品質並試圖彌合 v4 和 v5 之間的鴻溝。我們的一大變化是放棄了 Button 外掛的多數內容,而僅使用 HTML 和 CSS 來切換狀態。現在,toggle 按鈕由 checkbox 和 radio 按鈕提供支持,並且更加可靠。
你可以在 GitHub 上的第一個 v5 alpha 專案中查看 JS 相關變更的完整清單。
https://github.com/twbs/bootstrap/issues?q=label%3Ajs+project%3Atwbs%2Fbootstrap%2F11+is%3Aclosed
CSS 自訂屬性
如前所述,由於放棄了對 Internet Explorer 的支持,我們得以開始在 Bootstrap 5 中使用 CSS 自訂屬性。在 v4 版中我們只包含了一些顏色和字體的根變量,現在我們加入了 CSS 自訂屬性,讓許多元件和佈局選項受益。
以我們的.table 元件為例,其中加入了一些局部變量,讓開發人員更容易做出striped、hoverable 和active 的表格樣式:
.table { --bs-table-bg: #{$table-bg}; --bs-table-accent-bg: transparent; --bs-table-striped-color: #{$table-striped-color}; --bs-table-striped-bg: #{$table-striped-bg}; --bs-table-active-color: #{$table-active-color}; --bs-table-active-bg: #{$table-active-bg}; --bs-table-hover-color: #{$table-hover-color}; --bs-table-hover-bg: #{$table-hover-bg}; // Styles here... }
我們正在努力利用Sass和CSS 自訂屬性的強大能力,以打造更靈活的系統。你可以在 Tables 文件頁面中查閱更多相關資訊。不久的將來我們也會在按鈕之類的元件中見到這些特性的應用。
https://v5.getbootstrap.com/docs/5.0/content/tables/#how-do-the-variants-and-accented-tables-work
改進的自訂文件
我們對文件做出了許多改進,提供了更多解釋,消除了歧義,並為Bootstrap 的擴展提供了更多支持。首先要說的是全新的「自訂」部分。
https://v5.getbootstrap.com/docs/5.0/customize/overview/
v5 的“自定义”(Customize)文档在 v4 的“主题”(Theming)页面上进行了扩展,提供了更多内容和代码段,帮助开发人员基于 Bootstrap 的源 Sass 文件构建内容。我们在这里加入了更多内容,甚至提供了一个入门 npm 项目,帮助用户快速上手。它也是 GitHub 上的一个模板存储库,因此你可以自由 fork。
https://github.com/twbs/bootstrap-npm-starter
我们也在 v5 中扩展了调色板。借助内置的丰富颜色系统,你可以更轻松地自定义应用的外观,过程中无需离开代码库。我们还做了一些工作来改善色彩对比度,甚至在色彩文档中提供了色彩对比度指标。希望这能为 Bootstrap 支持的站点带来更好的可访问性。
表单更新
除了新的“自定义”部分外,我们还对“表单”(Forms)文档和组件进行了全面修订。我们将所有表单样式合并到了一个新的“表单”部分(包括输入组组件),以给予它们应有的重视。
除了新的文档页面外,我们还重新设计了所有表单控件,移除了重复内容。在 v4 版中,我们引入了一套丰富的自定义表单控件(check、radio、switch、file 等),但这些功能是对各款浏览器提供的默认设置的补充。在 v5 中,我们实现了完全自定义。
如果你熟悉 v4 的表单标记,新内容接受起来也会很容易。表单控件合并为一组,并重新设计现有元素(而不是做新元素或伪元素)后,我们就能提供更加一致的外观和体验。
<div class="form-check"> <input class="form-check-input" type="checkbox" value="" id="flexCheckDefault"> <label class="form-check-label" for="flexCheckDefault"> Default checkbox </label> </div> <div class="form-check"> <input class="form-check-input" type="radio" name="flexRadioDefault" id="flexRadioDefault1"> <label class="form-check-label" for="flexRadioDefault1"> Default radio </label> </div> <div class="form-check form-switch"> <input class="form-check-input" type="checkbox" id="flexSwitchCheckDefault"> <label class="form-check-label" for="flexSwitchCheckDefault">Default switch checkbox input</label> </div>
每个 checkbox、radio、select、file、range 等元素都包含自定义外观,以统一跨 OS 和浏览器的表单控件的样式和行为。这些新的表单控件都是基于完全语义化的标准表单控件构建的,不再需要多余的标记,只有表单控件和标签。
请查阅新的表单文档,告诉我们你的看法。
https://v5.getbootstrap.com/docs/5.0/forms/overview/
使用程序 API
我们很高兴看到有很多人都在构建新颖有趣的 CSS 库和工具包,不断改进我们构建 Web 内容的方式。因此,我们在 Bootstrap 5 中实现了全新的实用程序(utility)API。
$utilities: () !default; $utilities: map-merge( ( // ... "width": ( property: width, class: w, values: ( 25: 25%, 50: 50%, 75: 75%, 100: 100%, auto: auto ) ), // ... "margin": ( responsive: true, property: margin, class: m, values: map-merge($spacers, (auto: auto)) ), // ... ), $utilities);
自从实用程序成为一种首选的构建方式以来,我们一直在寻找适当的平衡点,以便在 Bootstrap 中实现它们的同时提供控制和自定义功能。在 v4 中,我们使用了全局 $enable-* 类来实现它,在 v5 中则更进一步。但采用基于 API 的方法后,我们在 Sass 中创建了一种语言和语法,让你可以及时创建自己的实用程序,同时还可以修改或删除我们提供的实用程序。
我们认为这对于那些基于我们的源文件构建内容的开发人员来说是一大利好,欢迎大家尝试。
注意! 我们将之前的一些 v4 实用程序移到了新的“帮助程序”(Helper)部分。这些帮助程序是一些代码段,比你常用的 property-value 更长一些。这改善了命名操作和我们的文档内容。
增强网格系统
从设计上来说,Bootstrap 5 并没有对 v4 推倒重来。我们希望大家都能更轻松地升级到这个新版本上。因此,我们将大部分构建系统保留在原位(只是拿掉了 jQuery),并且我们还保留了现有的网格系统。
以下是我们在网格中所做更改的摘要:
我们添加了一个新的网格层!那就是 xxl。
.gutter 类已被.g* 使用程序替代,它很像我们的 margin/padding 实用程序。我们还为网格 gutter spacing 添加了一些选项,以配合大家熟悉的 spacing 实用程序。
https://v5.getbootstrap.com/docs/5.0/layout/gutters/
表单布局选项已替换为新的网格系统。
添加了 Vertical spacing 类。
列默认不再是 position: relative。
下面是一个新的网格 gutter 类的快速示例:
<div class="row g-5"> <div class="col">...</div> <div class="col">...</div> <div class="col">...</div> </div>
查看文档以了解更多信息。
https://v5.getbootstrap.com/docs/5.0/layout/
CSS 网格布局正在日益完善,我们也在持续关注并学习它。预计将来的 v5 版本会进一步与之产生交集。
文档
我们将文档静态站点生成器从 Jekyll 切换到了 Hugo。长期以来,Jekyll 一直是我们的首选生成器,因为它安装和运行起来非常容易,并且部署到 GitHub Pages 也十分简单。
但这些年来,我们在 Jekyll 上遇到了两大问题:
1、Jekyll 要求安装 Ruby
2、站点生成速度非常缓慢
相比之下,Hugo 使用 Go 编写的,因此它没有外部运行时依赖项,并且速度更快。我们构建当前的主分支站点(包括文档的 Sass->CSS 转换)只用了 1.6 秒。我们的本地服务器重新加载的时间从 8-12 秒缩短到了毫秒计,大大改善了处理文档的体验。
即将推出:RTL、offcanvas 等
我们的第一个 Alpha 时间不够,还有很多内容没有加入进来,预计它们会在之后的版本中实现。这里先提前预告一下相关内容。
RTL 即将到来!我们已经用 RTLCSS 做了一个 PR,并且还将继续探索逻辑属性。就我个人而言,很抱歉花了这么长时间才解决这个问题,我们知道社区为此付出了多大努力。希望等待是值得的。
我们的 modal 有一个分叉的版本,实现了 offcanvas 菜单。这里还需要做很多工作来控制开销,改善体验。但有了 offcanvas 包装器后,大家就可以放很多适合侧边栏的内容(导航,购物车等)了。
我们正在评估其他许多更改,包括 Sass 模块系统、更多 CSS 自定义属性的应用,将 SVG 嵌入 HTML 而不是 CSS 等等。
未来还会有很多改进,包括更多文档改进、错误修复和体验增强。请务必查看我们的 open issue 和 PR,以提供反馈、测试社区 PR 或分享看法。
试用
可以访问官网获取新版本:
https://v5.getbootstrap.com/
或在命令行中输入:
npm i bootstrap@next
下一步计划
在 v5 中我们还有很多工作要做,其中包括一些重大更改。我们将尽可能听取反馈,与大家保持同步。我们的目标是在 3-4 周内再发布一次 Alpha 版,此后可能还会再发布几次。我们还将发布 v4.5.1 版本,以修复一些旧问题。
除此之外,请密切关注 Bootstrap Icons 项目,我们的 RFS 项目(现在在 v5 中已默认启用)和 npm starter 项目的更新信息。
https://icons.getbootstrap.com/ https://github.com/twbs/rfs https://github.com/twbs/bootstrap-npm-starter
以上是Bootstrap 5 Alpha發布囉!不再依賴jQuery,放棄支援IE的詳細內容。更多資訊請關注PHP中文網其他相關文章!