」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 為什麼 Bootstrap 用戶應該在下一個專案中考慮使用 Tailwind CSS?

為什麼 Bootstrap 用戶應該在下一個專案中考慮使用 Tailwind CSS?

發佈於2024-11-09
瀏覽:446

Tailwind CSS 入门 Bootstrap 用户指南

大家好! ?如果您是 Bootstrap 的长期用户,并且对过渡到 Tailwind CSS 感到好奇,那么本指南适合您。 Tailwind 是一个实用程序优先的 CSS 框架,与 Bootstrap 基于组件的结构相比,它提供了完全不同的方法。让我们深入了解如何作为 Bootstrap 用户轻松开始使用 Tailwind!

这个改进的版本确保所有代码块都正确格式化和缩进,使指南更易于阅读和遵循。

?为什么选择 Tailwind CSS?

在进入教程之前,先对 Bootstrap 和 Tailwind 进行快速比较:

  • Bootstrap:一个基于组件的框架,提供具有固执己见的设计的预构建 UI 组件。
  • Tailwind:一个实用程序优先的框架,允许您使用低级实用程序类设计组件的样式,从而提供更大的灵活性和控制力。

当您需要高度定制的设计时,Tailwind 会大放异彩,但如果您习惯了 Bootstrap,它可能会感到陌生。那么让我们一步步分解吧。

1. 在项目中设置 Tailwind

第 1 步:安装 Tailwind CSS

要开始使用 Tailwind CSS,您需要将其安装到您的项目中。请按照下列步骤操作:

  • 通过 npm 安装 Tailwind:
  npm install -D tailwindcss postcss autoprefixer
  npx tailwindcss init
  • 在 tailwind.config.js 文件中,设置内容数组以确保 Tailwind 扫描您的项目中的类:
  module.exports = {
    content: [
      './public/**/*.html',
      './src/**/*.{html,js}',
    ],
    theme: {
      extend: {},
    },
    plugins: [],
  }

第 2 步:创建 CSS 文件

现在,使用以下 Tailwind 指令在项目中创建一个 styles.css 文件:

@tailwind base;
@tailwind components;
@tailwind utilities;

第 3 步:在 HTML 中包含 Tailwind

在您的 HTML 文件中,链接生成的 CSS 文件:

您现在已准备好开始在项目中使用 Tailwind!

2. 理解顺风理念

如果您习惯了 Bootstrap 的类,如 .container、.row 和 .col-6,那么切换到 Tailwind 可能会感觉是一个很大的改变。在 Bootstrap 中,布局和设计决策被抽象为组件,而在 Tailwind 中,您可以使用实用程序类完全控制设计。

示例:创建网格布局

引导程序:

Column 1
Column 2

顺风:

Column 1
Column 2

在 Tailwind 中,grid 和 grid-cols-2 类取代了 Bootstrap 的 row 和 col 系统。 gap-4 类增加了网格项之间的间距,您可以通过调整实用程序类来根据需要调整所有内容。

3. Tailwind 的版式和间距

Bootstrap 和 Tailwind 之间的一个主要区别是排版和间距的处理方式。

示例:添加版式和填充

引导程序:

Hello, Bootstrap!

This is a lead paragraph.

顺风:

Hello, Tailwind!

This is a lead paragraph.

在 Tailwind 中,没有预定义的按钮或标题样式。相反,您可以直接应用实用程序类(text-4xl、bg-blue-500、px-4 等)来完全按照您想要的方式构建您的设计。

4.响应式设计

Bootstrap 用户喜欢的一件事是响应式网格系统。 Tailwind 还具有出色的响应式实用程序,但您可以使用 Tailwind 的响应式前缀控制不同屏幕尺寸的样式,而不是依赖预定义的断点。

示例:使元素响应

引导程序:

Responsive Column

顺风:

Responsive Column

在 Tailwind 中,w-full 确保元素在较小的屏幕上占据整个宽度,而 md:w-1/2 应用从 md 断点(中等屏幕尺寸)开始的 50% 宽度。

5. 定制 Tailwind

就像您可以自定义 Bootstrap 变量一样,您可以扩展 Tailwind 的实用程序类或创建您自己的自定义设计系统。在你的 tailwind.config.js 中,你可以扩展或修改默认主题:

module.exports = {
  theme: {
    extend: {
      colors: {
        primary: '#1DA1F2',
        secondary: '#14171A',
      },
    },
  },
}

通过此配置,您可以使用自定义颜色,如下所示:


6. 将 Bootstrap 组件迁移到 Tailwind

如果您想在 Tailwind 中重新创建常见的 Bootstrap 组件(如按钮、导航栏和模式),那么关键在于使用正确的实用程序。以下是一些示例:

按钮组件

引导程序:


顺风:


导航栏组件

引导程序:

顺风:

通过学习 Tailwind 的实用程序类,您可以比 Bootstrap 的预构建样式更灵活地构建复杂的组件。

7. 使用 Tailwind 插件

Tailwind 拥有丰富的插件生态系统,可扩展其功能。例如,您可以轻松添加表单、排版或宽高比实用程序:

npm install @tailwindcss/forms @tailwindcss/typography @tailwindcss/aspect-ratio

在你的 tailwind.config.js 中:

module.exports = {
  plugins: [
    require('@tailwindcss/forms'),
    require('@tailwindcss/typography'),
    require('@tailwindcss/aspect-ratio'),
  ]
}

8. 使用 Metronic 9 升级 – 一体化 Tailwind UI 工具包

如果您正在寻找结合了 Bootstrap 的简单性和熟悉性的 Tailwind CSS 体验,那么 Metronic 9 就是您的最佳选择!

Why Bootstrap Users Should Consider Tailwind CSS for Their Next Project ?

Metronic 9 是一款一体化 Tailwind UI 工具包,它集两全其美:Tailwind CSS 实用至上的强大功能,与您熟悉的 Bootstrap 结构化和组件驱动方法相结合。

为什么为您的 Tailwind 项目选择 Metronic 9?

  • 受欢迎且值得信赖:Metronic 于 2013 年发布,成为 Envato 市场上排名第一的管理仪表板模板,销量达 115,000 份,并获得 8000 条 5 星级评论,为全球 3000 多个 SaaS 项目提供支持。

  • 预构建组件:就像 Bootstrap 一样,Metronic 9 附带了数百个即用型组件,如按钮、导航栏、模式、表单等 - 所有这些均由 Tailwind CSS 实用程序提供支持。这使您可以快速构建现代的、响应式的 UI,而无需从头开始编写自定义样式。

  • Tailwind Bootstrap 体验:您可以获得 Tailwind 的灵活性和 Bootstrap 的结构化感觉。无论您是从 Bootstrap 迁移还是重新开始,您都会发现学习曲线很短。

  • 多种布局:Metronic 9 拥有超过 5 个应用程序布局演示和 1000 个 UI 元素,让您可以快速轻松地构建复杂的应用程序,无论您是在 SaaS 仪表板、管理面板还是一般 Web 应用程序上工作。

  • 无缝集成:Metronic 9 与 React、Next.js 和 Angular 等现代框架完美集成,通过类似 Bootstrap 的易用性让您在 Tailwind 之旅中领先一步。

立即开始​​使用 Metronic 9!

如果您从 Bootstrap 过渡并想要一个熟悉的、功能丰富的环境来使用 Tailwind,Metronic 9 是完美的解决方案。它旨在节省您的时间和精力,让您专注于构建出色的产品,而不会陷入设计细节的困境。

?在这里查看 Metronic 9 并开始利用 Tailwind 的灵活性和 Bootstrap 的简单性创建漂亮的 UI!

9. 结论:Tailwind 是您的正确选择吗?

如果您正在寻求对设计的更多定制和控制,而不受预构建组件的限制,
Tailwind CSS 是一个不错的选择。如果您习惯了 Bootstrap,可能需要一些时间来调整,但一旦您习惯了实用程序优先的方法,可能性是无限的!

请随时在下面的评论中提出任何问题或分享您的经验。快乐编码! ?

版本聲明 本文轉載於:https://dev.to/keenthemes/why-bootstrap-users-should-consider-tailwind-css-for-their-next-project--4j20?1如有侵犯,請聯絡study_golang@163. com刪除
最新教學 更多>
  • Bootstrap 4 Beta 中的列偏移發生了什麼事?
    Bootstrap 4 Beta 中的列偏移發生了什麼事?
    Bootstrap 4 Beta:列偏移的刪除和恢復Bootstrap 4 在其Beta 1 版本中引入了重大更改柱子偏移了。然而,隨著 Beta 2 的後續發布,這些變化已經逆轉。 從 offset-md-* 到 ml-auto在 Bootstrap 4 Beta 1 中, offset-md-*...
    程式設計 發佈於2024-11-09
  • 在 Go 中使用 WebSocket 進行即時通信
    在 Go 中使用 WebSocket 進行即時通信
    构建需要实时更新的应用程序(例如聊天应用程序、实时通知或协作工具)需要一种比传统 HTTP 更快、更具交互性的通信方法。这就是 WebSockets 发挥作用的地方!今天,我们将探讨如何在 Go 中使用 WebSocket,以便您可以向应用程序添加实时功能。 在这篇文章中,我们将介绍: WebSoc...
    程式設計 發佈於2024-11-09
  • 為什麼在 Java 中使用相同的種子時會得到相同的隨機數?
    為什麼在 Java 中使用相同的種子時會得到相同的隨機數?
    具有固定種子的Java隨機數:為什麼輸出相同? 在您的程式碼中,您定義了一種使用以下命令產生隨機數的方法指定的種子。但是,您會注意到,當您提供相同的種子時,所有 100 個產生的數字都是相同的。 此行為是預期的,因為在 Random 建構函式中使用相同的種子會產生可預測的數字序列。種子是初始化隨機數...
    程式設計 發佈於2024-11-09
  • jQuery Chaining 如何簡化開發並提高程式碼效率?
    jQuery Chaining 如何簡化開發並提高程式碼效率?
    理解 jQuery 中的物件和方法連結在 jQuery 中,連結允許在單一語句中串聯多個 jQuery 方法。這使開發人員能夠簡化程式碼並輕鬆執行複雜的操作。 連結的基本原理涉及每個 jQuery 方法的回傳值。當呼叫 jQuery 方法時,它通常會傳回一個表示所選元素的 jQuery 物件。這允許...
    程式設計 發佈於2024-11-09
  • Hono.js 基準測試:Node.js、Deno 和 Bun — 哪個最快?
    Hono.js 基準測試:Node.js、Deno 和 Bun — 哪個最快?
    Deno 2.0 剛剛發布,並聲稱比 Bun 和 Node.js 更快,同樣,Bun 也聲稱更快。這引起了我的興趣,所以我決定測試它們的性能,看看它們在現實場景中的比較。 為了公平比較,我需要選擇一個與所有三種 JavaScript 執行時間環境(Node.js、Deno 和 Bun)相容的框架。...
    程式設計 發佈於2024-11-09
  • 大批
    大批
    方法是可以在物件上呼叫的 fns 數組是對象,因此它們在 JS 中也有方法。 slice(begin):將陣列的一部分提取到新數組中,而不改變原始數組。 let arr = ['a','b','c','d','e']; // Usecase: Extract till index ...
    程式設計 發佈於2024-11-09
  • 何時應該使用 Tkinter 的 Entry Get 函數來有效檢索輸入?
    何時應該使用 Tkinter 的 Entry Get 函數來有效檢索輸入?
    Tkinter Entry 的Get 函數:深入探討其功能和用法在Tkinter 中,Entry 小部件通常用於收集用戶輸入以進一步收集使用者輸入然而,與Entry 關聯的get() 函數通常無法產生所需的結果,這可能會讓開發人員感到困惑。本文深入探討 get() 的概念,全面了解其執行與應用。 理...
    程式設計 發佈於2024-11-09
  • 如何克服 PHP 中日期表示的 2038 限制?
    如何克服 PHP 中日期表示的 2038 限制?
    PHP 中的日期表示:克服2038 年限制雖然PHP 的原生日期函數在2038 年有一個截止日期,但還有其他方法處理超出此限制的日期。其中一種方法是僅儲存年、月和日,而忽略小時、分鐘、秒和毫秒部分。 透過丟棄這些附加時間部分,可以顯著擴展可表示日期的範圍。這是因為這些元件中的每一個都佔用了 PHP ...
    程式設計 發佈於2024-11-09
  • 如何在 Go (Gorilla) 中向特定客戶端發送有針對性的 Websocket 更新?
    如何在 Go (Gorilla) 中向特定客戶端發送有針對性的 Websocket 更新?
    在Go (Gorilla) 中向特定客戶端發送Websocket 更新儘管是Go 新手,但您尋求有關實現Websocket 通信的指導您的預輸入項目。您已嘗試利用 Gorilla 的 GitHub 儲存庫中的範例,但在理解如何識別特定客戶端並針對 websocket 更新進行定位方面遇到了挑戰。 要...
    程式設計 發佈於2024-11-09
  • 使用swoole作為基於ESP6的腳本可程式控制器的雲端物聯網閘道框架
    使用swoole作為基於ESP6的腳本可程式控制器的雲端物聯網閘道框架
    腳本可程式控制器的本機功能基本上已完成,開始實現遠端相關功能。 遠端系統整體架構如下: 使用ESP8266的SDK實作tcp伺服器和tcp客戶端。 在tcp伺服器的基礎上編寫http協議解析程式碼,設計簡單的http伺服器,處理與瀏覽器的資料交互,包括內建網頁的下載,並使用ajax技術獲取狀態並...
    程式設計 發佈於2024-11-09
  • 為什麼在 Java 的 Random 類別中設定種子會傳回相同的數字?
    為什麼在 Java 的 Random 類別中設定種子會傳回相同的數字?
    Java隨機數產生:為什麼設定種子會回傳相同的數字? 儘管將Random類別的種子設定為特定值,但隨機數產生器始終會傳回相同的數字。讓我們探討一下可能導致此問題的原因。 了解 Random 類別和種子初始化Java Random 類別旨在產生偽隨機數。預設情況下,它使用其內部時鐘作為種子值,使其產生...
    程式設計 發佈於2024-11-09
  • 如何克服使用反射設定結構體欄位值時 SetCan() 總是傳回 False 的問題?
    如何克服使用反射設定結構體欄位值時 SetCan() 總是傳回 False 的問題?
    使用結構體的 SetString 探索反射反射提供了動態操作 Go 結構的強大工具。在此範例中,我們在嘗試使用反射來設定結構體欄位的值時遇到一個常見問題:CanSet() 始終傳回 false。這種障礙阻止了字段修改,使我們陷入困境。 識別陷阱提供的程式碼片段突顯了兩個基本錯誤:傳遞值而非指標: ...
    程式設計 發佈於2024-11-09
  • 為什麼 MySQL 中帶有子查詢的「IN」查詢很慢,如何提升效能?
    為什麼 MySQL 中帶有子查詢的「IN」查詢很慢,如何提升效能?
    MySQL 中帶有子查詢的緩慢「IN」查詢當使用子查詢時,使用「IN」運算子的MySQL查詢可能會表現出顯著的效能下降檢索「IN」子句的值很複雜。在這種情況下,用明確值取代子查詢結果會顯著縮短執行時間。 要了解此行為的原因,需要注意的是,每次評估「IN」查詢時,MySQL 都會執行子查詢。在提供的範...
    程式設計 發佈於2024-11-09
  • 如何使用WinAPI取得螢幕解析度?
    如何使用WinAPI取得螢幕解析度?
    使用 WinAPI 取得螢幕解析度在 WinAPI 中,存在多個函數來決定目前螢幕解析度。適當的選擇取決於具體要求。 檢索顯示尺寸檢索顯示尺寸檢索顯示尺寸 主監視器:使用GetSystemMetrics(SM_CXSCREEN) 和GetSystemMetrics( SM_CYCYSEN) 取得主顯...
    程式設計 發佈於2024-11-09
  • 如何修復透過 Gmail REST API 發送電子郵件時出現的「400 錯誤請求 + 失敗前提條件」錯誤?
    如何修復透過 Gmail REST API 發送電子郵件時出現的「400 錯誤請求 + 失敗前提條件」錯誤?
    Gmail REST API:解決“400 Bad Request Failed Precondition”錯誤嘗試使用Gmail REST API 與伺服器發送電子郵件時-到伺服器授權時,您可能會遇到一條錯誤訊息,指出「400 Bad Request Failed Precondition」。此錯...
    程式設計 發佈於2024-11-09

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3