自定义
配置和自定义 Tailwind 安装的指南。
由于 Tailwind 是一个用于构建定制用户界面的框架,因此它从一开始就考虑了自定义。
默认情况下,Tailwind 会在项目的根目录中查找一个可选的 tailwind.config.js
文件,您可以在其中定义任何自定义。
/** @type {import('tailwindcss').Config} */
module.exports = {
content: ['./src/**/*.{html,js}'],
theme: {
colors: {
'blue': '#1fb6ff',
'purple': '#7e5bef',
'pink': '#ff49db',
'orange': '#ff7849',
'green': '#13ce66',
'yellow': '#ffc82c',
'gray-dark': '#273444',
'gray': '#8492a6',
'gray-light': '#d3dce6',
},
fontFamily: {
sans: ['Graphik', 'sans-serif'],
serif: ['Merriweather', 'serif'],
},
extend: {
spacing: {
'8xl': '96rem',
'9xl': '128rem',
},
borderRadius: {
'4xl': '2rem',
}
}
},
}
配置文件的每个部分都是可选的,因此你只需指定想要更改的内容即可。任何缺失的部分都将回退到 Tailwind 的 默认配置。
使用安装 tailwindcss
npm 包时包含的 Tailwind CLI 实用程序为你的项目生成一个 Tailwind 配置文件
npx tailwindcss init
这将在你的项目的根目录创建一个最小的 tailwind.config.js
文件
/** @type {import('tailwindcss').Config} */
module.exports = {
content: [],
theme: {
extend: {},
},
plugins: [],
}
要使用 tailwind.config.js
以外的名称,请在命令行中将其作为参数传递
npx tailwindcss init tailwindcss-config.js
使用自定义文件名时,你需要在使用 Tailwind CLI 工具编译 CSS 时将其指定为命令行参数
npx tailwindcss -c ./tailwindcss-config.js -i input.css -o output.css
如果你将 Tailwind 用作 PostCSS 插件,则需要在 PostCSS 配置中指定自定义配置路径
module.exports = {
plugins: {
tailwindcss: { config: './tailwindcss-config.js' },
},
}
或者,你可以使用 @config
指令指定自定义配置路径
@config "./tailwindcss-config.js";
@tailwind base;
@tailwind components;
@tailwind utilities;
在 函数和指令 文档中了解有关 @config
指令的更多信息。
你还可以用 ESM 甚至 TypeScript 配置 Tailwind CSS
/** @type {import('tailwindcss').Config} */
export default {
content: [],
theme: {
extend: {},
},
plugins: [],
}
当你运行 npx tailwindcss init
时,我们会检测你的项目是否为 ES 模块,并使用正确的语法自动生成你的配置文件。
您还可以使用 --esm
标志显式生成 ESM 配置文件
npx tailwindcss init --esm
要生成 TypeScript 配置文件,请使用 --ts
标志
npx tailwindcss init --ts
如果您还想在 tailwind.config.js
文件旁边生成一个基本的 postcss.config.js
文件,请使用 -p
标志
npx tailwindcss init -p
这将在您的项目中生成一个类似以下内容的 postcss.config.js
文件
module.exports = {
plugins: {
tailwindcss: {},
autoprefixer: {},
},
}
对于大多数用户,我们建议您将配置文件保持得尽可能简洁,并且只指定您想要自定义的内容。
如果您希望脚手架一个包含所有 Tailwind 默认配置的完整配置文件,请使用 --full
选项
npx tailwindcss init --full
您将获得一个与 默认配置文件 相匹配的文件,Tailwind 在内部使用该文件。
content
部分是您配置所有 HTML 模板、JS 组件和包含 Tailwind 类名的任何其他文件的路径的位置。
/** @type {import('tailwindcss').Config} */
module.exports = {
content: [
'./pages/**/*.{html,js}',
'./components/**/*.{html,js}',
],
// ...
}
在 内容配置 文档中了解有关在内容源中进行配置的更多信息。
theme
部分是定义调色板、字体、类型比例、边框大小、断点(任何与网站视觉设计相关的内容)的位置。
/** @type {import('tailwindcss').Config} */
module.exports = {
// ...
theme: {
colors: {
'blue': '#1fb6ff',
'purple': '#7e5bef',
'pink': '#ff49db',
'orange': '#ff7849',
'green': '#13ce66',
'yellow': '#ffc82c',
'gray-dark': '#273444',
'gray': '#8492a6',
'gray-light': '#d3dce6',
},
fontFamily: {
sans: ['Graphik', 'sans-serif'],
serif: ['Merriweather', 'serif'],
},
extend: {
spacing: {
'8xl': '96rem',
'9xl': '128rem',
},
borderRadius: {
'4xl': '2rem',
}
}
}
}
在 主题配置指南 中了解有关默认主题及其自定义方法的更多信息。
plugins
部分允许你向 Tailwind 注册插件,这些插件可用于生成额外的实用程序、组件、基础样式或自定义变体。
/** @type {import('tailwindcss').Config} */
module.exports = {
// ...
plugins: [
require('@tailwindcss/forms'),
require('@tailwindcss/aspect-ratio'),
require('@tailwindcss/typography'),
require('tailwindcss-children'),
],
}
在 插件编写指南 中了解有关编写自己的插件的更多信息。
presets
部分允许你指定自己的自定义基础配置,而不是使用 Tailwind 的默认基础配置。
/** @type {import('tailwindcss').Config} */
module.exports = {
// ...
presets: [
require('@acmecorp/base-tailwind-config')
],
// Project-specific customizations
theme: {
//...
},
}
在 预设文档 中了解有关预设的更多信息。
prefix
选项允许你为 Tailwind 生成的所有实用程序类添加自定义前缀。这在 Tailwind 叠加在可能存在命名冲突的现有 CSS 之上的时候非常有用。
例如,你可以通过如下设置 prefix
选项来添加一个 tw-
前缀
/** @type {import('tailwindcss').Config} */
module.exports = {
prefix: 'tw-',
}
现在,每个类都将使用配置的前缀生成
.tw-text-left {
text-align: left;
}
.tw-text-center {
text-align: center;
}
.tw-text-right {
text-align: right;
}
/* etc. */
重要的是要理解,此前缀是在任何变体修饰符之后添加的。这意味着具有响应式或状态修饰符(如 sm:
或 hover:
)的类仍然会首先具有响应式或状态修饰符,你的自定义前缀出现在冒号之后
<div class="tw-text-lg md:tw-text-xl tw-bg-red-500 hover:tw-bg-blue-500">
<!-- -->
</div>
负值的破折号修饰符应在你添加前缀之前,因此如果你将 tw-
配置为你的前缀,则 -mt-8
将变为 -tw-mt-8
<div class="-tw-mt-8">
<!-- -->
</div>
前缀仅添加到由 Tailwind 生成的类;不会为你的自定义类添加任何前缀。
这意味着如果你像这样添加自己的自定义实用程序
@layer utilities {
.bg-brand-gradient { /* ... */ }
}
… 生成的变体将不会具有你配置的前缀
.bg-brand-gradient { /* ... */ }
.hover\:bg-brand-gradient:hover { /* ... */ }
如果你也想为自己的实用程序添加前缀,只需将前缀添加到类定义中
@layer utilities {
.tw-bg-brand-gradient { /* ... */ }
}
important
选项可让你控制 Tailwind 的实用工具是否应标记为 !important
。在将 Tailwind 与具有高特异性选择器的现有 CSS 一起使用时,这非常有用。
要将实用工具生成为 !important
,请将配置选项中的 important
键设置为 true
/** @type {import('tailwindcss').Config} */
module.exports = {
important: true,
}
现在,Tailwind 的所有实用工具类都将生成为 !important
.leading-none {
line-height: 1 !important;
}
.leading-tight {
line-height: 1.25 !important;
}
.leading-snug {
line-height: 1.375 !important;
}
/* etc. */
这也适用于使用 @layer utilities
指令在 CSS 中定义的任何自定义实用工具
/* Input */
@layer utilities {
.bg-brand-gradient {
background-image: linear-gradient(#3490dc, #6574cd);
}
}
/* Output */
.bg-brand-gradient {
background-image: linear-gradient(#3490dc, #6574cd) !important;
}
在合并添加内联样式到元素的第三方 JS 库时,将 important
设置为 true
可能会带来一些问题。在这些情况下,Tailwind 的 !important
实用工具会破坏内联样式,这可能会破坏你的预期设计。
为了解决这个问题,你可以将 important
设置为 ID 选择器,例如 #app
/** @type {import('tailwindcss').Config} */
module.exports = {
// ...
important: '#app',
}
此配置将在所有实用工具前加上给定的选择器,有效地提高其特异性,而不会实际使它们成为 !important
。
指定 important
选择器后,你需要确保网站的根元素与之匹配。使用上面的示例,我们需要将根元素的 id
属性设置为 app
,以便样式才能正常工作。
在配置全部设置完毕并且根元素与 Tailwind 配置中的选择器匹配后,Tailwind 的所有实用工具都将具有足够高的特异性来击败项目中使用的其他类,而不会干扰内联样式
<html>
<!-- ... -->
<style>
.high-specificity .nested .selector {
color: blue;
}
</style>
<body id="app">
<div class="high-specificity">
<div class="nested">
<!-- Will be red-500 -->
<div class="selector text-red-500"><!-- ... --></div>
</div>
</div>
<!-- Will be #bada55 -->
<div class="text-red-500" style="color: #bada55;"><!-- ... --></div>
</body>
</html>
在使用选择器策略时,请确保包含根选择器的模板文件包含在你的 内容配置 中,否则在构建生产环境时所有 CSS 都将被移除。
或者,您可以在开头添加一个 !
字符,以使任何实用程序变得重要
<p class="!font-medium font-bold">
This will be medium even though bold comes later in the CSS.
</p>
!
始终位于实用程序名称的开头,在任何变体之后,但在任何前缀之前
<div class="sm:hover:!tw-font-bold">
在极少数情况下,当您需要提高特殊性,因为您正在与一些不受您控制的样式作斗争时,这可能很有用。
separator
选项允许您自定义用于将修饰符(屏幕尺寸、hover
、focus
等)与实用程序名称(text-center
、items-end
等)分隔的字符。
我们默认使用冒号 (:
),但如果您使用的是不支持类名中特殊字符的模板语言,例如 Pug,则更改此设置可能很有用。
/** @type {import('tailwindcss').Config} */
module.exports = {
separator: '_',
}
corePlugins
部分允许您完全禁用 Tailwind 通常在默认情况下生成的类,如果您不需要它们用于您的项目。
要禁用特定的核心插件,请为 corePlugins
提供一个对象,将这些插件设置为 false
/** @type {import('tailwindcss').Config} */
module.exports = {
corePlugins: {
float: false,
objectFit: false,
objectPosition: false,
}
}
如果您想将哪些核心插件列入安全列表以启用它们,请提供一个数组,其中包含您想要使用的核心插件列表
/** @type {import('tailwindcss').Config} */
module.exports = {
corePlugins: [
'margin',
'padding',
'backgroundColor',
// ...
]
}
如果您想禁用 Tailwind 的所有核心插件,并简单地将 Tailwind 用作处理您自己的自定义插件的工具,请提供一个空数组
/** @type {import('tailwindcss').Config} */
module.exports = {
corePlugins: []
}
以下是所有核心插件的列表,供参考
核心插件 | 描述 |
---|---|
accentColor | accent-color 实用程序,例如 accent-green-800 |
accessibility | sr-only 和 not-sr-only 实用工具 |
alignContent | align-content 实用工具,例如 content-between |
alignItems | align-items 实用工具,例如 items-center |
alignSelf | align-self 实用工具,例如 self-end |
animation | animation 实用工具,例如 animate-ping |
appearance | appearance 实用工具,例如 appearance-none |
aspectRatio | aspect-ratio 实用工具,例如 aspect-square |
backdropBlur | backdrop-blur 实用工具,例如 backdrop-blur-md |
backdropBrightness | backdrop-brightness 实用工具,例如 backdrop-brightness-100 |
backdropContrast | backdrop-contrast 实用工具,例如 backdrop-contrast-100 |
backdropFilter | backdrop-filter 实用工具,例如 backdrop-filter |
backdropGrayscale | backdrop-grayscale 实用工具,例如 backdrop-grayscale-0 |
backdropHueRotate | backdrop-hue-rotate 实用工具,例如 backdrop-hue-rotate-30 |
backdropInvert | backdrop-invert 实用工具,例如 backdrop-invert-0 |
backdropOpacity | backdrop-opacity 实用工具,例如 backdrop-opacity-50 |
backdropSaturate | backdrop-saturate 实用工具,例如 backdrop-saturate-100 |
backdropSepia | backdrop-sepia 实用工具,例如 backdrop-sepia-0 |
backgroundAttachment | background-attachment 实用工具,例如 bg-local |
backgroundBlendMode | background-blend-mode 实用工具,例如 bg-blend-color-burn |
backgroundClip | background-clip 实用工具,例如 bg-clip-padding |
backgroundColor | background-color 实用工具,例如 bg-green-800 |
backgroundImage | background-image 实用工具,例如 bg-gradient-to-br |
backgroundOpacity | background-color 不透明度实用工具,例如 bg-opacity-25 |
backgroundOrigin | background-origin 实用工具,例如 bg-origin-padding |
backgroundPosition | background-position 实用工具,例如 bg-left-top |
backgroundRepeat | background-repeat 实用工具,例如 bg-repeat-x |
backgroundSize | background-size 实用工具,例如 bg-cover |
blur | blur 实用程序,如 blur-md |
borderCollapse | border-collapse 实用程序,如 border-collapse |
borderColor | border-color 实用程序,如 border-e-green-800 |
borderOpacity | border-color 不透明度实用程序,如 border-opacity-25 |
borderRadius | border-radius 实用程序,如 rounded-ss-lg |
borderSpacing | border-spacing 实用程序,如 border-spacing-x-28 |
borderStyle | border-style 实用程序,如 border-dotted |
borderWidth | border-width 实用程序,如 border-e-4 |
boxDecorationBreak | box-decoration-break 实用程序,如 decoration-clone |
boxShadow | box-shadow 实用程序,如 shadow-lg |
boxShadowColor | box-shadow-color 实用程序,如 shadow-green-800 |
boxSizing | box-sizing 实用程序,如 box-border |
breakAfter | break-after 实用程序,如 break-after-avoid-page |
breakBefore | break-before 实用程序,如 break-before-avoid-page |
breakInside | break-inside 实用程序,如 break-inside-avoid |
brightness | brightness 实用程序,如 brightness-100 |
captionSide | caption-side 实用程序,如 caption-top |
caretColor | caret-color 实用程序,如 caret-green-800 |
clear | clear 实用程序,如 clear-left |
columns | columns 实用程序,如 columns-auto |
container | container 组件 |
content | content 实用程序,如 content-none |
contrast | contrast 实用程序,如 contrast-100 |
cursor | cursor 实用程序,如 cursor-grab |
display | display 实用程序,如 table-column-group |
divideColor | 元素之间的 border-color 实用程序,如 divide-slate-500 |
divideOpacity | divide-opacity 实用程序,如 divide-opacity-50 |
divideStyle | divide-style 实用程序,如 divide-dotted |
divideWidth | 元素之间的 border-width 实用程序,如 divide-x-2 |
dropShadow | drop-shadow 实用程序,如 drop-shadow-lg |
fill | fill 实用程序,如 fill-green-700 |
filter | filter 实用程序,如 filter |
flex | flex 实用程序,如 flex-auto |
flexBasis | flex-basis 实用程序,如 basis-px |
flexDirection | flex-direction 实用程序,如 flex-row-reverse |
flexGrow | flex-grow 实用程序,如 flex-grow |
flexShrink | flex-shrink 实用程序,如 flex-shrink |
flexWrap | flex-wrap 实用程序,如 flex-wrap-reverse |
float | float 实用程序,如 float-right |
fontFamily | font-family 实用程序,如 font-serif |
fontSize | font-size 实用程序,如 text-3xl |
fontSmoothing | font-smoothing 实用程序,如 antialiased |
fontStyle | font-style 实用程序,如 italic |
fontVariantNumeric | font-variant-numeric 实用程序,如 oldstyle-nums |
fontWeight | font-weight 实用程序,如 font-medium |
forcedColorAdjust | forced-color-adjust 实用程序,如 forced-color-adjust-auto |
gap | gap 实用程序,如 gap-x-28 |
gradientColorStops | gradient-color-stops 实用程序,如 via-emerald-700 |
grayscale | grayscale 实用程序,如 grayscale-0 |
gridAutoColumns | grid-auto-columns 实用程序,如 auto-cols-min |
gridAutoFlow | grid-auto-flow 实用程序,如 grid-flow-dense |
gridAutoRows | grid-auto-rows 实用程序,如 auto-rows-min |
gridColumn | grid-column 实用程序,如 col-span-6 |
gridColumnEnd | grid-column-end 实用程序,如 col-end-7 |
gridColumnStart | grid-column-start 实用程序,如 col-start-7 |
gridRow | grid-row 实用程序,如 row-span-6 |
gridRowEnd | grid-row-end 实用程序,如 row-end-7 |
gridRowStart | grid-row-start 实用程序,如 row-start-7 |
gridTemplateColumns | grid-template-columns 实用程序,如 grid-cols-7 |
gridTemplateRows | grid-template-rows 实用程序,如 grid-rows-7 |
height | height 实用程序,如 h-96 |
hueRotate | hue-rotate 实用程序,如 hue-rotate-30 |
hyphens | hyphens 实用程序,如 hyphens-manual |
inset | inset 实用工具,例如 end-44 |
反转 | invert 实用工具,例如 invert-0 |
隔离 | isolation 实用工具,例如 isolate |
justifyContent | justify-content 实用工具,例如 justify-center |
justifyItems | justify-items 实用工具,例如 justify-items-end |
justifySelf | justify-self 实用工具,例如 justify-self-end |
letterSpacing | letter-spacing 实用工具,例如 tracking-normal |
lineClamp | line-clamp 实用工具,例如 line-clamp-4 |
lineHeight | line-height 实用工具,例如 leading-9 |
listStyleImage | list-style-image 实用工具,例如 list-image-none |
listStylePosition | list-style-position 实用工具,例如 list-inside |
listStyleType | list-style-type 实用工具,例如 list-disc |
margin | margin 实用工具,例如 me-28 |
maxHeight | max-height 实用工具,例如 max-h-44 |
maxWidth | max-width 实用工具,例如 max-w-80 |
minHeight | min-height 实用工具,例如 min-h-44 |
minWidth | min-width 实用工具,例如 min-w-36 |
mixBlendMode | mix-blend-mode 实用工具,例如 mix-blend-hard-light |
objectFit | object-fit 实用工具,例如 object-fill |
objectPosition | object-position 实用工具,例如 object-left-top |
opacity | opacity 实用工具,例如 opacity-50 |
order | order 实用工具,例如 order-8 |
outlineColor | outline-color 实用工具,例如 outline-green-800 |
outlineOffset | outline-offset 实用工具,例如 outline-offset-2 |
outlineStyle | outline-style 实用工具,例如 outline-dashed |
outlineWidth | outline-width 实用工具,例如 outline-2 |
overflow | overflow 实用工具,例如 overflow-x-hidden |
overscrollBehavior | overscroll-behavior 实用工具,例如 overscroll-y-contain |
padding | padding 实用工具,例如 pe-28 |
placeContent | place-content 实用工具,例如 place-content-between |
placeItems | place-items 实用工具,如 place-items-center |
placeSelf | place-self 实用工具,如 place-self-end |
placeholderColor | 占位符 color 实用工具,如 placeholder-red-600 |
placeholderOpacity | 占位符 color 不透明度实用工具,如 placeholder-opacity-25 |
pointerEvents | pointer-events 实用工具,如 pointer-events-none |
position | position 实用工具,如 absolute |
preflight | Tailwind 的基础/重置样式 |
resize | resize 实用工具,如 resize-y |
ringColor | ring-color 实用工具,如 ring-green-800 |
ringOffsetColor | ring-offset-color 实用工具,如 ring-offset-green-800 |
ringOffsetWidth | ring-offset-width 实用工具,如 ring-offset-2 |
ringOpacity | ring-opacity 实用工具,如 ring-opacity-50 |
ringWidth | ring-width 实用工具,如 ring-4 |
rotate | rotate 实用工具,如 rotate-6 |
saturate | saturate 实用工具,如 saturate-100 |
scale | scale 实用工具,如 scale-x-95 |
scrollBehavior | scroll-behavior 实用工具,如 scroll-auto |
scrollMargin | scroll-margin 实用工具,如 scroll-me-28 |
scrollPadding | scroll-padding 实用工具,如 scroll-pe-28 |
scrollSnapAlign | scroll-snap-align 实用工具,如 snap-end |
scrollSnapStop | scroll-snap-stop 实用工具,如 snap-normal |
scrollSnapType | scroll-snap-type 实用工具,如 snap-y |
sepia | sepia 实用工具,如 sepia-0 |
size | size 实用工具,如 size-0.5 |
skew | skew 实用工具,如 skew-x-12 |
space | “space-between”实用工具,如 space-x-4 |
stroke | stroke 实用工具,如 stroke-green-700 |
strokeWidth | stroke-width 实用工具,如 stroke-1 |
tableLayout | table-layout 实用工具,如 table-auto |
textAlign | text-align 实用工具,如 text-right |
textColor | text-color 实用程序,如 text-green-800 |
textDecoration | text-decoration 实用程序,如 overline |
textDecorationColor | text-decoration-color 实用程序,如 decoration-green-800 |
textDecorationStyle | text-decoration-style 实用程序,如 decoration-dotted |
textDecorationThickness | text-decoration-thickness 实用程序,如 decoration-4 |
textIndent | text-indent 实用程序,如 indent-28 |
textOpacity | text-opacity 实用程序,如 text-opacity-50 |
textOverflow | text-overflow 实用程序,如 overflow-ellipsis |
textTransform | text-transform 实用程序,如 lowercase |
textUnderlineOffset | text-underline-offset 实用程序,如 underline-offset-2 |
textWrap | text-wrap 实用程序,如 text-nowrap |
touchAction | touch-action 实用程序,如 touch-pan-right |
transform | transform 实用程序(用于启用变换功能) |
transformOrigin | transform-origin 实用程序,如 origin-bottom-right |
transitionDelay | transition-delay 实用程序,如 delay-200 |
transitionDuration | transition-duration 实用程序,如 duration-200 |
transitionProperty | transition-property 实用程序,如 transition-colors |
transitionTimingFunction | transition-timing-function 实用程序,如 ease-in |
translate | translate 实用程序,如 translate-x-full |
userSelect | user-select 实用程序,如 select-text |
verticalAlign | vertical-align 实用程序,如 align-bottom |
visibility | visibility 实用程序,如 invisible |
whitespace | whitespace 实用程序,如 whitespace-pre |
width | width 实用程序,如 w-2.5 |
willChange | will-change 实用程序,如 will-change-scroll |
wordBreak | word-break 实用程序,如 break-words |
zIndex | z-index 实用程序,如 z-30 |
对于需要使用不同 Tailwind 配置生成多个 CSS 文件的项目,请使用 @config
指令指定应为每个 CSS 入口点使用哪个配置文件
@config "./tailwind.site.config.js";
@tailwind base;
@tailwind components;
@tailwind utilities;
在 函数和指令 文档中了解有关 @config
指令的更多信息。
通常,在自己的客户端 JavaScript 中引用配置值非常有用,例如在 React 或 Vue 组件中动态应用内联样式时访问某些主题值。
为了简化此操作,Tailwind 提供了一个 resolveConfig
帮助器,你可以使用它生成配置对象的完全合并版本
import resolveConfig from 'tailwindcss/resolveConfig'
import tailwindConfig from './tailwind.config.js'
const fullConfig = resolveConfig(tailwindConfig)
fullConfig.theme.width[4]
// => '1rem'
fullConfig.theme.screens.md
// => '768px'
fullConfig.theme.boxShadow['2xl']
// => '0 25px 50px -12px rgba(0, 0, 0, 0.25)'
请注意,这会传递很多我们的构建时依赖项,从而导致更大的客户端包大小。为了避免这种情况,我们建议使用 babel-plugin-preval 等工具在构建时生成配置的静态版本。
我们为 tailwind.config.js
文件提供第一方 TypeScript 类型,这些类型为你提供了各种有用的 IDE 支持,并且无需过多参考文档即可轻松更改配置。
使用 Tailwind CLI 生成的配置文件默认包含必要的类型注释,但要手动配置 TypeScript 类型,只需在配置对象上方添加类型注释
/** @type {import('tailwindcss').Config} */
module.exports = {
content: [
// ...
],
theme: {
extend: {},
},
plugins: [],
}