- Tailwind CSS 教程
- Tailwind CSS - 首頁
- Tailwind CSS - 路線圖
- Tailwind CSS - 簡介
- Tailwind CSS - 安裝
- Tailwind CSS - 編輯器設定
- Tailwind CSS - 核心概念
- Tailwind CSS - 實用優先基礎
- Tailwind CSS - 懸停、焦點和其他狀態
- Tailwind CSS - 響應式設計
- Tailwind CSS - 暗黑模式
- Tailwind CSS - 重用樣式
- Tailwind CSS - 新增自定義樣式
- Tailwind CSS - 函式和指令
- Tailwind CSS - 自定義
- Tailwind CSS - 配置
- Tailwind CSS - 內容配置
- Tailwind CSS - 主題配置
- Tailwind CSS - 自定義螢幕尺寸
- Tailwind CSS - 自定義顏色
- Tailwind CSS - 自定義間距
- Tailwind CSS - 外掛
- Tailwind CSS - 預設
- Tailwind CSS - 基礎樣式
- Tailwind CSS - 預處理
- Tailwind CSS - 佈局
- Tailwind CSS - 高寬比
- Tailwind CSS - 容器
- Tailwind CSS - 列
- Tailwind CSS - 分欄後
- Tailwind CSS - 分欄前
- Tailwind CSS - 分欄內
- Tailwind CSS - 邊框裝飾斷開
- Tailwind CSS - 盒子尺寸
- Tailwind CSS - 顯示
- Tailwind CSS - 浮動
- Tailwind CSS - 清除浮動
- Tailwind CSS - 隔離
- Tailwind CSS - 物件適應
- Tailwind CSS - 物件位置
- Tailwind CSS - 溢位
- Tailwind CSS - 滾動行為
- Tailwind CSS - 定位
- Tailwind CSS - 上/右/下/左
- Tailwind CSS - 可見性
- Tailwind CSS - Z 軸索引
- Tailwind CSS - Flexbox 和 Grid
- Tailwind CSS - Flex 基準
- Tailwind CSS - Flex 方向
- Tailwind CSS - Flex 換行
- Tailwind CSS - Flex
- Tailwind CSS - Flex 伸展
- Tailwind CSS - Flex 壓縮
- Tailwind CSS - 順序
- Tailwind CSS - 網格模板列
- Tailwind CSS - 網格列開始/結束
- Tailwind CSS - 網格模板行
- Tailwind CSS - 網格行開始/結束
- Tailwind CSS - 網格自動填充
- Tailwind CSS - 網格自動列
- Tailwind CSS - 網格自動行
- Tailwind CSS - 間隙
- Tailwind CSS - 內容對齊
- Tailwind CSS - 專案對齊
- Tailwind CSS - 自身對齊
- Tailwind CSS - 內容排列
- Tailwind CSS - 專案排列
- Tailwind CSS - 自身排列
- Tailwind CSS - 內容放置
- Tailwind CSS - 專案放置
- Tailwind CSS - 自身放置
- Tailwind CSS - 間距
- Tailwind CSS - 內邊距
- Tailwind CSS - 外邊距
- Tailwind CSS - 元素間距
- Tailwind CSS - 尺寸
- Tailwind CSS - 寬度
- Tailwind CSS - 最小寬度
- Tailwind CSS - 最大寬度
- Tailwind CSS - 高度
- Tailwind CSS - 最小高度
- Tailwind CSS - 最大高度
- Tailwind CSS - 尺寸
- Tailwind CSS - 排版
- Tailwind CSS - 字體系列
- Tailwind CSS - 字型大小
- Tailwind CSS - 字型平滑
- Tailwind CSS - 字型樣式
- Tailwind CSS - 字型粗細
- Tailwind CSS - 數字字型變體
- Tailwind CSS - 字間距
- Tailwind CSS - 行限制
- Tailwind CSS - 行高
- Tailwind CSS - 列表樣式影像
- Tailwind CSS - 列表樣式位置
- Tailwind CSS - 列表樣式型別
- Tailwind CSS - 文字對齊
- Tailwind CSS - 文字顏色
- Tailwind CSS - 文字裝飾
- Tailwind CSS - 文字裝飾顏色
- Tailwind CSS - 文字裝飾樣式
- Tailwind CSS - 文字裝飾粗細
- Tailwind CSS - 文字下劃線偏移
- Tailwind CSS - 文字轉換
- Tailwind CSS - 文字溢位
- Tailwind CSS - 文字換行
- Tailwind CSS - 文字縮排
- Tailwind CSS - 垂直對齊
- Tailwind CSS - 空格
- Tailwind CSS - 斷詞
- Tailwind CSS - 連字元
- Tailwind CSS - 內容
- Tailwind CSS - 背景
- Tailwind CSS - 背景附件
- Tailwind CSS - 背景裁剪
- Tailwind CSS - 背景顏色
- Tailwind CSS - 背景原點
- Tailwind CSS - 背景位置
- Tailwind CSS - 背景重複
- Tailwind CSS - 背景尺寸
- Tailwind CSS - 背景影像
- Tailwind CSS - 漸變顏色停止
- Tailwind CSS - 邊框
- Tailwind CSS - 圓角
- Tailwind CSS - 邊框寬度
- Tailwind CSS - 邊框顏色
- Tailwind CSS - 邊框樣式
- Tailwind CSS - 分割線寬度
- Tailwind CSS - 分割線顏色
- Tailwind CSS - 分割線樣式
- Tailwind CSS - 輪廓寬度
- Tailwind CSS - 輪廓顏色
- Tailwind CSS - 輪廓樣式
- Tailwind CSS - 輪廓偏移
- Tailwind CSS - 環寬度
- Tailwind CSS - 環顏色
- Tailwind CSS - 環偏移寬度
- Tailwind CSS - 環偏移顏色
- Tailwind CSS - 效果
- Tailwind CSS - 盒子陰影
- Tailwind CSS - 盒子陰影顏色
- Tailwind CSS - 不透明度
- Tailwind CSS - 混合模式
- Tailwind CSS - 背景混合模式
- Tailwind CSS - 過濾器
- Tailwind CSS - 模糊
- Tailwind CSS - 亮度
- Tailwind CSS - 對比度
- Tailwind CSS - 投影
- Tailwind CSS - 灰度
- Tailwind CSS - 色相旋轉
- Tailwind CSS - 反色
- Tailwind CSS - 飽和度
- Tailwind CSS - 棕褐色
- Tailwind CSS - 背景模糊
- Tailwind CSS - 背景亮度
- Tailwind CSS - 背景對比度
- Tailwind CSS - 背景灰度
- Tailwind CSS - 背景色相旋轉
- Tailwind CSS - 背景反色
- Tailwind CSS - 背景不透明度
- Tailwind CSS - 背景飽和度
- Tailwind CSS - 背景棕褐色
- Tailwind CSS - 表格
- Tailwind CSS - 邊框摺疊
- Tailwind CSS - 邊框間距
- Tailwind CSS - 表格佈局
- Tailwind CSS - 標題位置
- Tailwind CSS - 過渡和動畫
- Tailwind CSS - 過渡屬性
- Tailwind CSS - 過渡時長
- Tailwind CSS - 過渡時間函式
- Tailwind CSS - 過渡延遲
- Tailwind CSS - 動畫
- Tailwind CSS - 變換
- Tailwind CSS - 縮放
- Tailwind CSS - 旋轉
- Tailwind CSS - 平移
- Tailwind CSS - 傾斜
- Tailwind CSS - 變換原點
- Tailwind CSS - 互動性
- Tailwind CSS - 口音顏色
- Tailwind CSS - 外觀
- Tailwind CSS - 游標
- Tailwind CSS - 插入符號顏色
- Tailwind CSS - 指標事件
- Tailwind CSS - 調整大小
- Tailwind CSS - 滾動行為
- Tailwind CSS - 滾動邊距
- Tailwind CSS - 滾動填充
- Tailwind CSS - 滾動捕捉對齊
- Tailwind CSS - 滾動捕捉停止
- Tailwind CSS - 滾動捕捉型別
- Tailwind CSS - 觸控操作
- Tailwind CSS - 使用者選擇
- Tailwind CSS - 將更改
- Tailwind CSS - SVG
- Tailwind CSS - 填充
- Tailwind CSS - 描邊
- Tailwind CSS - 描邊寬度
- Tailwind CSS - 可訪問性
- Tailwind CSS - 螢幕閱讀器
- Tailwind CSS - 強制顏色調整
- Tailwind CSS - 附加
- Tailwind CSS - 與預處理器一起使用
- Tailwind CSS - 生產最佳化
- Tailwind CSS - 參考
- Tailwind CSS - 核心概念
- Tailwind CSS - 自定義
- Tailwind CSS - 佈局
- Tailwind CSS - Flexbox 和 Grid
- Tailwind CSS - 間距
- Tailwind CSS - 尺寸
- Tailwind CSS - 排版
- Tailwind CSS - 背景
- Tailwind CSS - 邊框
- Tailwind CSS - 效果
- Tailwind CSS - 過濾器
- Tailwind CSS - 表格
- Tailwind CSS - 過渡和動畫
- Tailwind CSS - 轉換
- Tailwind CSS - 互動性
- Tailwind CSS - 資源
- Tailwind CSS - 討論
- Tailwind CSS - 有用資源
Tailwind CSS - 內容配置
Tailwind CSS 內容配置指定了專案的原始檔。'tailwind.config.js' 檔案的 Content 部分指定了所有 HTML 模板、Javascript 元件以及包含 Tailwind 類名的任何其他原始檔。
內容源路徑配置
'tailwind.config.js' 檔案的 content 部分中的源路徑配置有助於 Tailwind CSS 掃描所有 HTML、Javascript 元件以及任何包含類名的檔案,以生成這些樣式的相應 CSS。
/** @type {import('tailwindcss').Config} */
module.exports = {
content: [
'./pages/**/*.{html,js}',
'./components/**/*.{html,js}'
],
// ...
}
關鍵點
在 Tailwind CSS 中配置內容時需要記住的關鍵點。
- 使用萬用字元模式(**/*)遞迴匹配檔案。
- 使用{}和逗號分隔的值來匹配選項列表,例如 {html,js}。
- 保持路徑相對於專案根目錄。
內容配置模式技巧
為了有效地配置內容,請遵循以下技巧
- 精確:排除捕獲不必要檔案或目錄(例如 node_modules)的廣泛模式。
content: [
'./components/**/*.{html,js}',
'./pages/**/*.{html,js}',
'./index.html', // Include specific files if needed
],
content: [
'./public/index.html',
'./src/**/*.{html,js}',
],
content: [
'./src/**/*.js',
],
content: [
'./src/**/*.css',
],
深度類識別
Tailwind 使用正則表示式從原始碼中提取潛在的類名,而無需解析或執行它。
<div class="md:flex">
<div class="md:flex-shrink-0">
<img class="rounded-lg md:w-56" src="/img/shopping.jpg" alt="Woman paying for a purchase">
</div>
<div class="mt-4 md:mt-0 md:ml-6">
<div class="uppercase tracking-wide text-sm text-indigo-600 font-bold">
Marketing
</div>
<a href="/get-started" class="block mt-1 text-lg leading-tight font-semibold text-gray-900 hover:underline">
Finding customers for your new business
</a>
<p class="mt-2 text-gray-600">
Getting a new business off the ground is a lot of hard work.
Here are five ideas you can use to find your first customers.
</p>
</div>
</div>
注意:Tailwind 可以與任何語言(如 JSX)一起使用,透過在任何地方搜尋類,而不僅僅是在 HTML 中。
動態類名
Tailwind 僅在您的程式碼中查詢完整的類名。如果您使用字串或部分構建類名。Tailwind 無法識別它們,也不會生成相應的 CSS。
建立類名時應遵循的措施。
- 始終使用完整的類名,而不是動態構建類名。
<div class="{{ error ? 'text-red-600' : 'text-green-600' }}"></div>
function Button({ color, children }) {
const colorVariants = {
blue: "bg-blue-600 hover:bg-blue-500",
red: "bg-red-600 hover:bg-red-500",
};
return <button className={`${colorVariants[color]} ...`}>{children}</button>;
}
使用外部庫
當使用第三方庫並使用您自己的自定義 CSS 為其設定樣式時,請嘗試不要在不使用Tailwind 的 @layer功能的情況下編寫這些樣式。這將使 Tailwind 更容易掃描第三方庫的原始碼。
@tailwind base;
@tailwind components;
.select2-dropdown {
@apply rounded-b-lg shadow-md;
}
.select2-search {
@apply border border-gray-300 rounded;
}
.select2-results__group {
@apply text-lg font-bold text-gray-900;
}
/* ... */
@tailwind utilities;
如果您在多個專案中使用 Tailwind 樣式的元件,請確保已將 Tailwind 配置為掃描這些元件以查詢類名。
module.exports = {
content: [
'./components/**/*.{html,js}',
'./pages/**/*.{html,js}',
'./node_modules/@my-company/tailwind-components/**/*.js',
],
// ...
}
如果您使用的是帶有工作區的 monorepo,則可能需要使用require.resolve,以便 Tailwind 可以找到您的內容檔案。
const path = require('path');
module.exports = {
content: [
'./components/**/*.{html,js}',
'./pages/**/*.{html,js}',
path.join(path.dirname(require.resolve('@my-company/tailwind-components')), '**/*.js'),
],
// ...
}
使用相對路徑
Tailwind 預設情況下使用當前目錄作為路徑。為了避免問題,將 'relative' 屬性設定為 'true' 以將路徑繫結到 'tailwind.config.js' 檔案。
module.exports = {
content: {
relative: true,
files: ["./pages/**/*.{html,js}", "./components/**/*.{html,js}"],
},
// ...
};
設定原始內容
要在 Tailwind 中掃描原始內容而不是檔案的內容,請使用具有 "raw" 鍵的物件而不是檔案路徑。這允許您配置 Tailwind 以掃描自定義內容。
/** @type {import('tailwindcss').Config} */
module.exports = {
content: [
'./pages/**/*.{html,js}',
'./components/**/*.{html,js}',
{ raw: '<div class="font-bold">', extension: 'html' },
],
// ...
}
安全列表類
如果您希望 Tailwind 生成內容檔案中不存在的某些類名,請使用 safelist 選項。
/** @type {import('tailwindcss').Config} */
module.exports = {
content: [
'./pages/**/*.{html,js}',
'./components/**/*.{html,js}',
],
safelist: [
'bg-red-500',
'text-3xl',
'lg:text-4xl',
]
// ...
}
使用正則表示式
Tailwind 支援基於模式的安全列表,用於您需要安全列表許多類的情況。
/** @type {import('tailwindcss').Config} */
module.exports = {
content: [
'./pages/**/*.{html,js}',
'./components/**/*.{html,js}',
],
safelist: [
'text-2xl',
'text-3xl',
{
pattern: /bg-(red|green|blue)-(100|200|300)/,
},
],
// ...
}
您可以強制 Tailwind 為某些類建立額外的樣式,方法是將它們新增到 'variants' 選項中。
/** @type {import('tailwindcss').Config} */
module.exports = {
content: [
'./pages/**/*.{html,js}',
'./components/**/*.{html,js}',
],
safelist: [
'text-2xl',
'text-3xl',
{
pattern: /bg-(red|green|blue)-(100|200|300)/,
variants: ['lg', 'hover', 'focus', 'lg:hover'],
},
],
// ...
}
消除類
Tailwind 可能會建立不必要的類,例如即使不使用也會生成 'container' 類,如下所示。
<div class="text-lg leading-8 text-gray-600"> Every custom pool we design starts as a used shipping container, and is retrofitted with state of the art technology and finishes to turn it into a beautiful and functional way to entertain your guests all summer long. </div>
為了避免與現有 CSS 衝突,而無需為所有 Tailwind 類新增字首,請使用blocklist選項忽略特定類。
/** @type {import('tailwindcss').Config} */
module.exports = {
content: [
'./pages/**/*.{html,js}',
'./components/**/*.{html,js}',
],
blocklist: [
'container',
'collapse',
],
// ...
}
原始檔轉換
如果您編寫的內容會轉換成 HTML(例如 Markdown),請先將內容轉換成 HTML,然後再提取類。使用 'content.transform' 轉換檔案並使用 'content.files' 指定源路徑。
const remark = require('remark')
module.exports = {
content: {
files: ['./src/**/*.{html,md}'],
transform: {
md: (content) => {
return remark().process(content)
}
}
},
// ...
}
修改提取邏輯
使用 'extract' 自定義特定檔案型別的類名檢測。
注意:這是一個高階功能,您需要以不同的方式指定源路徑。
/** @type {import('tailwindcss').Config} */
module.exports = {
content: {
files: ['./src/**/*.{html,wtf}'],
extract: {
wtf: (content) => {
return content.match(/[^<>"'`\s]*/g)
}
}
},
// ...
}
常見問題排查
以下是配置 Tailwind CSS 內容時的一些常見問題,以及避免這些問題的措施。
- 缺少類:如果 Tailwind 沒有生成類,請仔細檢查您的內容配置和副檔名(例如,React 元件使用 'jsx' 而不是 'js'),以確保它匹配所有原始檔。
module.exports = {
content: [
'./src/**/*.{html,js}',
'./src/**/*.{html,js,jsx}'
],
// ...
}
<!-- Incorrect -->
<div class="text-{{ error ? 'red' : 'green' }}-600"></div>
<!-- Correct -->
<div class="{{ error ? 'text-red-600' : 'text-green-600' }}"></div>
content: [
'./src/**/*.{html,js}',
'./src/pages/**/*.{html,js}',
'./src/components/**/*.{html,js}',
'./src/index.html',
],
// package.json
{
// ...
"scripts": {
"start": "concurrently \"npm run start:css\" \"react-scripts start\"",
"start:css": "tailwindcss -o src/tailwind.css --watch",
"build": "npm run build:css && react-scripts build",
"build:css": "NODE_ENV=production tailwindcss -o src/tailwind.css -m",
},
}