」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > Tailwindcss 不是 Bootstrap 也不是 Materialize

Tailwindcss 不是 Bootstrap 也不是 Materialize

發佈於2024-11-07
瀏覽:621

Tailwindcss is not Bootstrap nor Materialize

Tailwind CSS 席卷了 Web 开发世界?️,但对其本质的误解仍然存在。在最近的一次设计系统规划讨论中,当一位同事随意将 Tailwind CSS 与 Bootstrap 和 Materialise 进行比较时,我差点没喝茶☕(对不起,我不喝咖啡)。这个令人震惊的发现就像发现我的猫认为自己是狗一样! ??

那么,拿起你的爆米花吗?当我澄清事实并揭开 Tailwind CSS 的真实身份时!

小介绍

在本文中,我们将深入了解 Tailwind CSS 的真正含义,探索其独特的样式方法以及它与传统 CSS 框架的区别。最后,您将了解为什么将 Tailwind CSS 与 Bootstrap 或其他基于组件的框架进行比较就像将苹果与橙子进行比较??

Tailwind CSS 不是什么 ❌

在我们探索 Tailwind 的真实本质之前,让我们先澄清一些误解:

  • 不是组件库:与 Bootstrap 或 Materialize 不同,Tailwind CSS 不提供开箱即用的预构建组件?
  • 非设计导向:它不会对您的项目强加特定的视觉风格?
  • 不仅仅是另一个 CSS 框架:虽然它在技术上是一个 CSS 框架,但其实用性优先的方法使其有别于传统框架?

以下是一些常见的误解:

  • ? “Tailwind CSS 就像内联样式”:不,不是。与内联样式不同,Tailwind 允许您使用高级功能,例如 伪类、媒体查询和动画 。它提供了一种实用程序优先的方法,与内联样式相比,可以减少 CSS 类的数量
  • ? “您不需要了解 CSS 即可使用 Tailwind”:这是 false。对 CSS 的深入理解对于有效使用 Tailwind CSS4 至关重要。虽然它简化了样式的许多方面,但了解 CSS 基础知识有助于理解实用程序类如何工作以及如何在需要时自定义它们
  • ? “Tailwind CSS 无法自定义”:这与事实相差甚远。事实上,它被设计为高度可扩展和可定制

现在我们已经消除了一些误解,接下来让我们探讨一下 Tailwind CSS 的真正独特之处以及它为何彻底改变开发人员处理 Web 样式的方式。

实用优先的 CSS 框架

Tailwind CSS 的核心是一个实用性优先 CSS 框架。这意味着它提供了一组低级实用程序类,您可以使用它们直接在 HTML 中构建自定义设计。您无需为每个元素编写自定义 CSS,而是应用处理特定样式属性的预定义类。就像拥有一把瑞士军刀?为你的CSS!

例如,不要写:

.button {
  padding: 0.5rem 1rem;
  background-color: blue;
  color: white;
  border-radius: 0.25rem;
}

您将在 HTML 中使用 Tailwind 类:


变相的设计系统

虽然 Tailwind 不提供预构建组件,但它提供了全面的设计系统。它带有一组精心设计的默认值颜色、间距、排版等等。这些默认设置是可自定义的,允许您根据项目的特定设计需求定制 Tailwind。

看看这个自定义配置:

// tailwind.config.js

module.exports = {
  theme: {
    extend: {
      colors: {
        primary: {
          light: '#4da6ff',
          DEFAULT: '#0066cc',
          dark: '#004080',
        },
        secondary: {
          light: '#ffb366',
          DEFAULT: '#ff8000',
          dark: '#cc6600',
        },
      },
      spacing: {
        '72': '18rem',
        '84': '21rem',
        '96': '24rem',
      },
      fontFamily: {
        sans: ['Roboto', 'Arial', 'sans-serif'],
        serif: ['Merriweather', 'Georgia', 'serif'],
      },
      fontSize: {
        'xs': '.75rem',
        'sm': '.875rem',
        'base': '1rem',
        'lg': '1.125rem',
        'xl': '1.25rem',
        '2xl': '1.5rem',
        '3xl': '1.875rem',
        '4xl': '2.25rem',
        '5xl': '3rem',
      },
      borderRadius: {
        'sm': '0.125rem',
        DEFAULT: '0.25rem',
        'md': '0.375rem',
        'lg': '0.5rem',
        'full': '9999px',
      },
    },
  },
  variants: {
    extend: {
      backgroundColor: ['active'],
      textColor: ['visited'],
    },
  },
}

为什么 Tailwind CSS 脱颖而出

灵活性和定制化

与 Bootstrap 或 Materialise 提供一组固执己见的组件不同,Tailwind 为您提供构建块来创建您自己的独特设计。这种灵活性允许更多的创作自由,并有助于避免许多网站陷入的“引导程序外观”

性能优势

其实用程序优先的方法可以减少 CSS 文件大小,特别是与内置的清除功能结合使用时。此功能删除了生产中未使用的样式,从而产生更精简、性能更高的样式表。您的网站会感觉就像打了类固醇一样! ?

开发者体验增强器

它通过以下方式显着改善了开发者体验:

  • 减少上下文切换:您可以在不离开 HTML 的情况下设置元素的样式。不再需要处理多个文件! ?‍♂️
  • 促进一致性:预定义的类鼓励在整个项目中保持一致的间距、颜色和其他设计元素。您的设计将像一支调音良好的管弦乐队一样和谐?
  • 加速开发:通过触手可及的实用程序类,您可以快速制作原型并迭代设计。你会感觉自己拥有超能力!⚡ 通过 Tailwindcss Intellisense vscode 扩展,你可以获得 自动完成和 linting 的类以及添加的自定义类

那是一个包裹?

Tailwind CSS 不仅仅是另一个 CSS 框架。通过提供一组低级实用程序类,它使开发人员能够创建独特、高效且可维护的设计,而不受传统 CSS 框架的限制。

因此,下次有人将 Tailwind 与 Bootstrap 进行比较时,您将有能力解释为什么这种比较没有达到目标,以及为什么 Tailwind 可能正是您的项目所需的游戏规则改变者。快乐编码! ??‍?

版本聲明 本文轉載於:https://dev.to/lynxgsm/tailwindcss-is-not-bootstrap-nor-materialize-663?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • Java字符串非空且非null的有效檢查方法
    Java字符串非空且非null的有效檢查方法
    檢查字符串是否不是null而不是空的if (str != null && !str.isEmpty())Option 2: str.length() == 0For Java versions prior to 1.6, str.length() == 0 can be二手: if(str!= n...
    程式設計 發佈於2025-05-03
  • Python高效去除文本中HTML標籤方法
    Python高效去除文本中HTML標籤方法
    在Python中剝離HTML標籤,以獲取原始的文本表示 僅通過Python的MlStripper 來簡化剝離過程,Python Standard庫提供了一個專門的功能,MLSTREPERE,MLSTREPERIPLE,MLSTREPERE,MLSTREPERIPE,MLSTREPERCE,MLST...
    程式設計 發佈於2025-05-03
  • 如何將來自三個MySQL表的數據組合到新表中?
    如何將來自三個MySQL表的數據組合到新表中?
    mysql:從三個表和列的新表創建新表 答案:為了實現這一目標,您可以利用一個3-way Join。 選擇p。 *,d.content作為年齡 來自人為p的人 加入d.person_id = p.id上的d的詳細信息 加入T.Id = d.detail_id的分類法 其中t.taxonomy ...
    程式設計 發佈於2025-05-03
  • 可以在純CS中將多個粘性元素彼此堆疊在一起嗎?
    可以在純CS中將多個粘性元素彼此堆疊在一起嗎?
    [2这里: https://webthemez.com/demo/sticky-multi-header-scroll/index.html </main> <section> { display:grid; grid-template-...
    程式設計 發佈於2025-05-03
  • 同實例無需轉儲複製MySQL數據庫方法
    同實例無需轉儲複製MySQL數據庫方法
    在同一實例上複製一個MySQL數據庫而無需轉儲在同一mySQL實例上複製數據庫,而無需創建InterMediate sqql script。以下方法為傳統的轉儲和IMPORT過程提供了更簡單的替代方法。 直接管道數據 MySQL手動概述了一種允許將mysqldump直接輸出到MySQL cli...
    程式設計 發佈於2025-05-03
  • 在Go語言中如何簡潔定義10的冪常量
    在Go語言中如何簡潔定義10的冪常量
    在GO 利用浮點線文字一種簡潔的方式是使用浮點文字,該方法是使用floingpoint protals。寫作1E3比寫作1000更有效。這是一個示例(67個沒有空間的字符):的文字用於未構圖的整數常數,我們可以將1000用於KB,並用KB將隨後的常量乘以KB,如下所示(77個沒有空格的字符):,作...
    程式設計 發佈於2025-05-03
  • 如何處理PHP文件系統功能中的UTF-8文件名?
    如何處理PHP文件系統功能中的UTF-8文件名?
    在PHP的Filesystem functions中處理UTF-8 FileNames 在使用PHP的MKDIR函數中含有UTF-8字符的文件很多flusf-8字符時,您可能會在Windows Explorer中遇到comploreer grounder grounder grounder gro...
    程式設計 發佈於2025-05-03
  • Async Void vs. Async Task在ASP.NET中:為什麼Async Void方法有時會拋出異常?
    Async Void vs. Async Task在ASP.NET中:為什麼Async Void方法有時會拋出異常?
    在ASP.NET async void void async void void void void void void void的設計無需返回asynchroncon而無需返回任務對象。他們在執行過程中增加未償還操作的計數,並在完成後減少。在某些情況下,這種行為可能是有益的,例如未期望或明確...
    程式設計 發佈於2025-05-03
  • 如何避免Go語言切片時的內存洩漏?
    如何避免Go語言切片時的內存洩漏?
    ,a [j:] ...雖然通常有效,但如果使用指針,可能會導致內存洩漏。這是因為原始的備份陣列保持完整,這意味著新切片外部指針引用的任何對象仍然可能佔據內存。 copy(a [i:] 對於k,n:= len(a)-j i,len(a); k
    程式設計 發佈於2025-05-03
  • HTML格式標籤
    HTML格式標籤
    HTML 格式化元素 **HTML Formatting is a process of formatting text for better look and feel. HTML provides us ability to format text without us...
    程式設計 發佈於2025-05-03
  • 圖片在Chrome中為何仍有邊框? `border: none;`無效解決方案
    圖片在Chrome中為何仍有邊框? `border: none;`無效解決方案
    在chrome 在使用Chrome and IE9中的圖像時遇到的一個頻繁的問題是圍繞圖像的持續薄薄邊框,儘管指定了圖像,儘管指定了;和“邊境:無;”在CSS中。要解決此問題,請考慮以下方法: Chrome具有忽略“ border:none; none;”的已知錯誤,風格。要解決此問題,請使用以下...
    程式設計 發佈於2025-05-03
  • 為什麼使用Firefox後退按鈕時JavaScript執行停止?
    為什麼使用Firefox後退按鈕時JavaScript執行停止?
    導航歷史記錄問題:JavaScript使用Firefox Back Back 此行為是由瀏覽器緩存JavaScript資源引起的。要解決此問題並確保在後續頁面訪問中執行腳本,Firefox用戶應設置一個空功能。 警報'); }; alert('inline Alert')...
    程式設計 發佈於2025-05-03
  • \“(1)vs.(;;):編譯器優化是否消除了性能差異?\”
    \“(1)vs.(;;):編譯器優化是否消除了性能差異?\”
    答案: 在大多數現代編譯器中,while(1)和(1)和(;;)之間沒有性能差異。編譯器: perl: 1 輸入 - > 2 2 NextState(Main 2 -E:1)V-> 3 9 Leaveloop VK/2-> A 3 toterloop(next-> 8 last-> 9 ...
    程式設計 發佈於2025-05-03
  • 如何將PANDAS DataFrame列轉換為DateTime格式並按日期過濾?
    如何將PANDAS DataFrame列轉換為DateTime格式並按日期過濾?
    Transform Pandas DataFrame Column to DateTime FormatScenario:Data within a Pandas DataFrame often exists in various formats, including strings.使用時間數據時...
    程式設計 發佈於2025-05-03
  • 大批
    大批
    [2 數組是對象,因此它們在JS中也具有方法。 切片(開始):在新數組中提取部分數組,而無需突變原始數組。 令ARR = ['a','b','c','d','e']; // USECASE:提取直到索引作...
    程式設計 發佈於2025-05-03

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

Copyright© 2022 湘ICP备2022001581号-3