”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 为什么 Bootstrap 用户应该在下一个项目中考虑使用 Tailwind CSS?

为什么 Bootstrap 用户应该在下一个项目中考虑使用 Tailwind CSS?

发布于2024-11-09
浏览:535

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如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 如何从具有不同数组长度的字典创建 Pandas DataFrame?
    如何从具有不同数组长度的字典创建 Pandas DataFrame?
    从条目长度不均匀的字典创建 DataFrame在 Python 中,可以从每个条目保存一个 Numpy 数组的字典创建 DataFrame。然而,当条目之间的数组长度不同时,就会出现挑战。默认情况下,Pandas 需要统一长度的数组,从而导致类似“ValueError: arrays must al...
    编程 发布于2024-11-09
  • 如何修复 macOS 上 Django 中的“配置不正确:加载 MySQLdb 模块时出错”?
    如何修复 macOS 上 Django 中的“配置不正确:加载 MySQLdb 模块时出错”?
    MySQL配置不正确:相对路径的问题在Django中运行python manage.py runserver时,可能会遇到以下错误:ImproperlyConfigured: Error loading MySQLdb module: dlopen(/Library/Python/2.7/site-...
    编程 发布于2024-11-09
  • 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
  • 如何防止 Pandas 在保存 CSV 时添加索引列?
    如何防止 Pandas 在保存 CSV 时添加索引列?
    避免使用 Pandas 保存的 CSV 中的索引列使用 Pandas 进行修改后保存 csv 文件时,默认行为是包含索引列。为了避免这种情况,可以在使用 to_csv() 方法时将索引参数设置为 False。为了详细说明,请考虑以下命令序列:pd.read_csv('C:/Path/to/file....
    编程 发布于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
  • 除了“if”语句之外:还有哪些地方可以在不进行强制转换的情况下使用具有显式“bool”转换的类型?
    除了“if”语句之外:还有哪些地方可以在不进行强制转换的情况下使用具有显式“bool”转换的类型?
    无需强制转换即可上下文转换为 bool您的类定义了对 bool 的显式转换,使您能够在条件语句中直接使用其实例“t”。然而,这种显式转换提出了一个问题:“t”在哪里可以在不进行强制转换的情况下用作 bool?上下文转换场景C 标准指定了四种值可以根据上下文转换为 bool 的主要场景:语句:if、w...
    编程 发布于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 p...
    编程 发布于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 年有一个截止日期,但还有其他方法处理超出此限制的日期。其中一种方法是仅存储年、月和日,而忽略小时、分钟、秒和毫秒部分。通过丢弃这些附加时间部分,可以显着扩展可表示日期的范围。这是因为这些组件中的每一个都占用了 PH...
    编程 发布于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

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3