Tailwind CSS 配置怎么设置?

文章导读
Previous Quiz Next Tailwind CSS 配置允许通过定义框架的各种方面(如 theme、colors、screen、plugin 等)来自定义框架,以满足项目需求,使用 'tailwind.config.js' 文件即可轻松实现。
📋 目录
  1. A 如何生成配置文件?
  2. B 自定义配置
  3. C 设置多个配置文件
  4. D 在 JavaScript 中管理引用
  5. E TypeScript 类型
A A

Tailwind CSS - 配置



Previous
Quiz
Next

Tailwind CSS 配置允许通过定义框架的各种方面(如 theme、colors、screen、plugin 等)来自定义框架,以满足项目需求,使用 'tailwind.config.js' 文件即可轻松实现。

如何生成配置文件?

以下是生成 'tailwind.config.js' 文件的逐步指导列表。

  • Tailwind CSS 安装: 安装 Tailwind CSS 是必须首先完成的步骤。运行以下命令生成默认配置文件:
    npm install tailwindcss
  • 生成配置文件: 使用以下命令,即可轻松生成 'tailwind.config.js' 文件。
    npx tailwind css init
  • 生成的文件: 将生成以下文件。
  • Tailwind CSS config.js

自定义配置

'tailwind.config.js' 文件允许您轻松自定义配置,并使 utility classes 与项目的特定设计需求对齐。我们可以轻松自定义 theme、fonts、colors、screens、spacing、plugin 等,如下面所示。

  • Content: 'tailwind.config.js' 文件的 content 部分使您能够添加所有包含 Tailwind CSS classes 的 HTML templates、JS components 和其他文件的路径。
/** @type {import('tailwindcss').Config} */
module.exports = {
  content: [
    './pages/**/*.{html,js}',
    './components/**/*.{html,js}',
  ],
  // ...
}
  
  • Theme: 'tailwind.config.js' 文件的 Theme 部分使您能够通过配置 colors、font-family、breakpoints 等来自定义项目的视觉设计,如下面所示。
  • /** @type {import('tailwindcss').Config} */
    module.exports = {
      // ...
      theme: {
        colors: {
          'blue': '#1fb6ff',
          'purple': '#7e5bef',
          'pink': '#ff49db',
        },
        fontFamily: {
          sans: ['Graphik', 'sans-serif'],
          serif: ['Merriweather', 'serif'],
        },
        extend: {
          spacing: {
            '8xl': '96rem',
            '9xl': '128rem',
          },
        }
      }
    }
    
    'tailwind.config.js' 文件的 plugin 部分使您能够添加额外的 utilities、components、base styles、custom variants 等,如下面所示。
  • Plugin: 'tailwind.config.js' 文件的 Plugin 部分使您能够添加额外的 utilities、components、base styles、custom variants 等,如下面所示。
  • /** @type {import('tailwindcss').Config} */
    module.exports = {
      // ...
      plugins: [
        require('@tailwindcss/forms'),
        require('@tailwindcss/aspect-ratio'),
        require('@tailwindcss/typography'),
        require('tailwindcss-children'),
      ],
    }
    
  • Prefix: 'tailwind.config.js' 文件的 Prefix 部分使您能够为所有 utility classes 添加自定义前缀,有助于减少命名冲突,如下面所示。
  • /** @type {import('tailwindcss').Config} */
    module.exports = {
      prefix: 'tw-',
    }
      

    现在每个 class 都会带有配置的前缀生成:

    .tw-text-left {
      text-align: left;
    }
    .tw-text-center {
      text-align: center;
    }
    .tw-text-right {
      text-align: right;
    }
    /* 等 */
      

    对于负值,请在您的 prefix 前添加连字符修饰符。例如,如果您的 prefix 是 tw-,则 -mt-8 会变成 -tw-mt-8。

    <div class="-tw-mt-8">
      <!-- -->
    </div>
      

    注意: Prefix 只适用于 Tailwind 生成的 classes,不适用于您的自定义 classes。 要为自己的 utilities 添加 prefix,只需在 class 定义中添加 prefix:

    @layer utilities {
      .tw-bg-brand-gradient { /* ... */ }
    }
      
  • Important: important 选项允许您将 Tailwind utilities 标记为 "!important"。这在您需要 CSS 中高 specificity 时很有帮助。要使 utilities 成为 '!important',在配置中将 'important' 键设置为 'true'。
  • /** @type {import('tailwindcss').Config} */
    module.exports = {
    important: true,
    }
      

    现在所有的 Tailwind utility classes 都会作为 '!important' 生成:

    .leading-none {
    line-height: 1 !important;
    }
    .leading-tight {
    line-height: 1.25 !important;
    }
    .leading-snug {
    line-height: 1.375 !important;
    }
    /* 等 */
      

    这也适用于您在 CSS 中使用 '@layer utilities' 指令创建的自定义 utilities。

    /* 输入 */
    @layer utilities {
    .bg-brand-gradient {
    background-image: linear-gradient(#3490dc, #6574cd);
    }
    }
    
    /* 输出 */
    .bg-brand-gradient {
    background-image: linear-gradient(#3490dc, #6574cd) !important;
    }
      

    Selector strategy: 将 important 设置为 true 可能会与使用内联样式的第三方 JS libraries 产生冲突,因为 Tailwind 的 '!important' utilities 会覆盖它们并可能破坏您的设计。

    要避免此问题,请遵循以下措施:

    • 将 'important' 设置为 ID selector,如 '#app'。此配置会用给定的 selector 为您的 utilities 添加前缀,提高它们的 specificity,而不使用 '!important'。
    /** @type {import('tailwindcss').Config} */
    module.exports = {
    // ...
    important: '#app',
    }
        
  • 要确保样式正常工作,请为网站根元素赋予与 important selector 相同的 id,如 id="app"。
  • <html>
    <!-- ... -->
    <style>
      .high-specificity .nested .selector {
        color: blue;
      }
    </style>
    <body id="app">
      <div class="high-specificity">
        <div class="nested">
          <!-- 将是 red-500 -->
          <div class="selector text-red-500"><!-- ... --></div>
        </div>
      </div>
    
      <!-- 将是 #bada55 -->
      <div class="text-red-500" style="color: #bada55;"><!-- ... --></div>
    </body>
    </html>
          
  • 确保在 content 配置中包含包含根 selector 的模板文件。否则,在为生产环境构建时,所有 CSS 都会被删除。
  • Important Modifier 您还可以通过在 utility 名称开头添加 '!' 来使其成为 important。 将 '!' 放在任何 variants 之后但 prefix 之前。这在您需要更多 specificity 来覆盖其他样式时很有帮助。

  • Separator: separator 选项允许您选择一个字符来分隔 modifiers(如 screen sizes、hover)与 utility names(如 text-center)。默认使用冒号 (:),但您可以为不支持特殊字符的模板语言如 Pug 更改它。
  • /** @type {import('tailwindcss').Config} */
    module.exports = {
    // ...
    important: '#app',
    }
    
    您可以使用 corePlugins 部分来关闭任何您不需要的默认 Tailwind classes。
  • Core Plugins: 您可以使用 corePlugins 部分来关闭任何您不需要的默认 Tailwind classes。只需在 corePlugins 对象中将不需要的 plugins 设置为 false。
  • /** @type {import('tailwindcss').Config} */
    module.exports = {
      corePlugins: {
        float: false,
        objectFit: false,
        objectPosition: false,
      }
    }
    

    如果您想 safelist 应该启用的 core plugins,请将它们列在数组中。

    /** @type {import('tailwindcss').Config} */
    module.exports = {
    corePlugins: [
    'margin',
    'padding',
    'backgroundColor',
    // ...
    ]
    }
    

    如果您想禁用所有 Tailwind 的 core plugins 并只使用您的自定义 plugins,请提供一个空数组。

    /** @type {import('tailwindcss').Config} */
    module.exports = {
      corePlugins: []
    }
    

    以下是每个 core plugin 的参考列表:

    Core Plugin 描述
    accentColor 如 accent-green-800 的 accent-color utilities
    accessibility sr-only 和 not-sr-only utilities
    alignContent 如 content-between 的 align-content utilities
    alignItems 如 items-center 的 align-items utilities
    alignSelf 如 self-end 的 align-self utilities
    animation 如 animate-ping 的 animation utilities
    appearance 如 appearance-none 的 appearance utilities
    aspectRatio 如 aspect-square 的 aspect-ratio utilities
    backdropBlur 如 backdrop-blur-md 的 backdrop-blur utilities
    backdropBrightness 如 backdrop-brightness-100 的 backdrop-brightness utilities
    backdropContrast 如 backdrop-contrast-100 的 backdrop-contrast utilities
    backdropFilter 如 backdrop-filter 的 backdrop-filter utilities
    backdropGrayscale 如 backdrop-grayscale-0 的 backdrop-grayscale utilities
    backdropHueRotate 如 backdrop-hue-rotate-30 的 backdrop-hue-rotate utilities
    backdropInvert 如 backdrop-invert-0 的 backdrop-invert utilities
    backdropOpacity 如 backdrop-opacity-50 的 backdrop-opacity utilities
    backdropSaturate 如 backdrop-saturate-100 的 backdrop-saturate utilities
    backdropSepia 如 backdrop-sepia-0 的 backdrop-sepia utilities
    backgroundAttachment 如 bg-local 的 background-attachment utilities
    backgroundBlendMode 如 bg-blend-color-burn 的 background-blend-mode utilities
    backgroundClip 如 bg-clip-padding 的 background-clip utilities
    backgroundColor 如 bg-green-800 的 background-color utilities
    backgroundImage

    设置多个配置文件

    对于拥有多个 CSS 文件和不同 Tailwind 设置的项目,使用 @config 指令为每个 CSS 文件选择配置文件。

    @config "./tailwind.site.config.js";
    
    @tailwind base;
    @tailwind components;
    @tailwind utilities;
    

    在 JavaScript 中管理引用

    你可能需要在 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)'
    

    TypeScript 类型

    Tailwind CLI 会自动添加类型,但如果你需要手动添加,请在配置文件上方添加一行。

    /** @type {import('tailwindcss').Config} */
    module.exports = {
    content: [
      // ...
    ],
    theme: {
      extend: {},
    },
    plugins: [],
    }