Tailwind CSS - Configuration



Tailwind CSS Configuration allows to easily customize the framework as per the project needs by defining various aspects of the framework, such as theme, colors, screen, plugin, etc., using the 'tailwind.config.js' file.

How to Generate the Configuration File?

The following is the list of step-by-step guidance for generating the 'tailwind.config.js' file.

  • Tailwind CSS Installation: The Installation of Tailwind CSS is the mandatory step that has to be done first. Run the following command to generate the default configuration file:
    npm install tailwindcss
  • Generate the Configuration File: By using the following command, the 'tailwind.config.js' file can be easily generated.
    npx tailwind css init
  • Resultant File: The following file will be generated.
  • Tailwind CSS config.js

Customize the Configuration

The 'tailwind.config.js' file allows to easily customize the configuration and aligns utility classes with project's specific design requirements. We can easily customize the theme, fonts, colors, screens, spacing, plugin, and more on it, as showed below.

  • Content: The content section of the 'tailwind.config.js' file enables you to add the path of all HTML templates, JS components, and other files containing Tailwind CSS classes.
/** @type {import('tailwindcss').Config} */
module.exports = {
  content: [
    './pages/**/*.{html,js}',
    './components/**/*.{html,js}',
  ],
  // ...
}
  
  • Theme: The Theme section of 'tailwind.config.js' file enables you to customize the visual design of the project by configuring colors, font-family, breakpoints and more, as shown below.
  • /** @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',
          },
        }
      }
    }
    
    The plugin section of the 'tailwind.config.js' file enables you to add extra utilities, components, base styles, custom variants, and more, as shown below.
  • Plugin: The Plugin section of 'tailwind.config.js' file enables you to add extra utilities, components, base styles, custom variants, and more, as shown below.
  • /** @type {import('tailwindcss').Config} */
    module.exports = {
      // ...
      plugins: [
        require('@tailwindcss/forms'),
        require('@tailwindcss/aspect-ratio'),
        require('@tailwindcss/typography'),
        require('tailwindcss-children'),
      ],
    }
    
  • Prefix: The Prefix section of 'tailwind.config.js' file enables you to add a custom prefix to all utility classes, helping to reduce naming conflicts as shown below.
  • /** @type {import('tailwindcss').Config} */
    module.exports = {
      prefix: 'tw-',
    }
      

    Now every class will be generated with the configured prefix:

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

    Add the dash modifier before your prefix for negative values. For example, -mt-8 becomes -tw-mt-8 if your prefix is tw-.

    Note: Prefixes apply only to Tailwind-generated classes, not to your custom classes. To prefix your own utilities, simply add the prefix to the class definition:

    @layer utilities {
      .tw-bg-brand-gradient { /* ... */ }
    }
      
  • Important: The important option lets you mark Tailwind utilities with "!important". This helps when you need high specificity in your CSS. To make utilities as '!important', set the 'important' key to 'true' in your configuration.
  • /** @type {import('tailwindcss').Config} */
    module.exports = {
    important: true,
    }
      

    Now all of Tailwind's utility classes will be generated as '!important':

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

    This also works for custom utilities you create with the '@layer utilities' directive in your CSS.

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

    Selector strategy: Setting important to true can cause conflicts with third-party JS libraries using inline styles, as Tailwind's '!important' utilities will override them and may break your design.

    To avoid this issue, follow the following measures:

    • Set 'important' to an ID selector like '#app'. This configuration prefixes your utilities with the given selector, increasing their specificity without using '!important'.
    /** @type {import('tailwindcss').Config} */
    module.exports = {
    // ...
    important: '#app',
    }
        
  • To ensure styles work properly, give your site's root element the same id as the important selector, like id="app".
  • 
    
    
    
      
  • Make sure to include the template file in your content configuration that contains your root selector.Otherwise, all your CSS will be deleted when you build for production.
  • Important Modifier You can also make a utility important, by adding a '!' at the beginning of its name. Place the '!' after any variants but before any prefix. This helps when you need more specificity to override other styles.

  • Separator: The separator option lets you pick a character to divide modifiers (like screen sizes, hover) from utility names (e.g., text-center). By defaults it uses colon (:), but you can change it for templating languages like Pug that don't support special characters.
  • /** @type {import('tailwindcss').Config} */
    module.exports = {
    // ...
    important: '#app',
    }
    
    You can use the corePlugins section to turn off any default Tailwind classes that you don't need.
  • Core Plugins: You can use the corePlugins section to turn off any default Tailwind classes that you don't need. Just set the unwanted plugins to false in the corePlugins object.
  • /** @type {import('tailwindcss').Config} */
    module.exports = {
      corePlugins: {
        float: false,
        objectFit: false,
        objectPosition: false,
      }
    }
    

    If you want to safelist which core plugins should be enabled, list them in an array.

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

    If you want to disable all of Tailwind's core plugins and use only your custom plugins, provide an empty array.

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

    Following is the list of every core plugin for reference:

    Core Plugin Description
    accentColor The accent-color utilities like accent-green-800
    accessibility The sr-only and not-sr-only utilities
    alignContent The align-content utilities like content-between
    alignItems The align-items utilities like items-center
    alignSelf The align-self utilities like self-end
    animation The animation utilities like animate-ping
    appearance The appearance utilities like appearance-none
    aspectRatio The aspect-ratio utilities like aspect-square
    backdropBlur The backdrop-blur utilities like backdrop-blur-md
    backdropBrightness The backdrop-brightness utilities like backdrop-brightness-100
    backdropContrast The backdrop-contrast utilities like backdrop-contrast-100
    backdropFilter The backdrop-filter utilities like backdrop-filter
    backdropGrayscale The backdrop-grayscale utilities like backdrop-grayscale-0
    backdropHueRotate The backdrop-hue-rotate utilities like backdrop-hue-rotate-30
    backdropInvert The backdrop-invert utilities like backdrop-invert-0
    backdropOpacity The backdrop-opacity utilities like backdrop-opacity-50
    backdropSaturate The backdrop-saturate utilities like backdrop-saturate-100
    backdropSepia The backdrop-sepia utilities like backdrop-sepia-0
    backgroundAttachment The background-attachment utilities like bg-local
    backgroundBlendMode The background-blend-mode utilities like bg-blend-color-burn
    backgroundClip The background-clip utilities like bg-clip-padding
    backgroundColor The background-color utilities like bg-green-800
    backgroundImage The background-image utilities like bg-gradient-to-br
    backgroundOpacity The background-color opacity utilities like bg-opacity-25
    backgroundOrigin The background-origin utilities like bg-origin-padding
    backgroundPosition The background-position utilities like bg-left-top
    backgroundRepeat The background-repeat utilities like bg-repeat-x
    backgroundSize The background-size utilities like bg-cover
    blur The blur utilities like blur-md
    borderCollapse The border-collapse utilities like border-collapse
    borderColor The border-color utilities like border-e-green-800
    borderOpacity The border-color opacity utilities like border-opacity-25
    borderRadius The border-radius utilities like rounded-ss-lg
    borderSpacing The border-spacing utilities like border-spacing-x-28
    borderStyle The border-style utilities like border-dotted
    borderWidth The border-width utilities like border-e-4
    boxDecorationBreak The box-decoration-break utilities like decoration-clone
    boxShadow The box-shadow utilities like shadow-lg
    boxShadowColor The box-shadow-color utilities like shadow-green-800
    boxSizing The box-sizing utilities like box-border
    breakAfter The break-after utilities like break-after-avoid-page
    breakBefore The break-before utilities like break-before-avoid-page
    breakInside The break-inside utilities like break-inside-avoid
    brightness The brightness utilities like brightness-100
    captionSide The caption-side utilities like caption-top
    caretColor The caret-color utilities like caret-green-800
    clear The clear utilities like clear-left
    columns The columns utilities like columns-auto
    contain The contain utilities like contain-size
    container The container component
    content The content utilities like content-none
    contrast The contrast utilities like contrast-100
    cursor The cursor utilities like cursor-grab
    display The display utilities like table-column-group
    divideColor The between elements border-color utilities like divide-slate-500
    divideOpacity The divide-opacity utilities like divide-opacity-50
    divideStyle The divide-style utilities like divide-dotted
    divideWidth The between elements border-width utilities like divide-x-2
    dropShadow The drop-shadow utilities like drop-shadow-lg
    fill The fill utilities like fill-green-700
    filter The filter utilities like filter
    flex The flex utilities like flex-auto
    flexBasis The flex-basis utilities like basis-px
    flexDirection The flex-direction utilities like flex-row-reverse
    flexGrow The flex-grow utilities like flex-grow
    flexShrink The flex-shrink utilities like flex-shrink
    flexWrap The flex-wrap utilities like flex-wrap-reverse
    float The float utilities like float-right
    fontFamily The font-family utilities like font-serif
    fontSize The font-size utilities like text-3xl
    fontSmoothing The font-smoothing utilities like antialiased
    fontStyle The font-style utilities like italic
    fontVariantNumeric The font-variant-numeric utilities like oldstyle-nums
    fontWeight The font-weight utilities like font-medium
    forcedColorAdjust The forced-color-adjust utilities like forced-color-adjust-auto
    gap The gap utilities like gap-x-28
    gradientColorStops The gradient-color-stops utilities like via-emerald-700
    grayscale The grayscale utilities like grayscale-0
    gridAutoColumns The grid-auto-columns utilities like auto-cols-min
    gridAutoFlow The grid-auto-flow utilities like grid-flow-dense
    gridAutoRows The grid-auto-rows utilities like auto-rows-min
    gridColumn The grid-column utilities like col-span-6
    gridColumnEnd The grid-column-end utilities like col-end-7
    gridColumnStart The grid-column-start utilities like col-start-7
    gridRow The grid-row utilities like row-span-6
    gridRowEnd The grid-row-end utilities like row-end-7
    gridRowStart The grid-row-start utilities like row-start-7
    gridTemplateColumns The grid-template-columns utilities like grid-cols-7
    gridTemplateRows The grid-template-rows utilities like grid-rows-7
    height The height utilities like h-96
    hueRotate The hue-rotate utilities like hue-rotate-30
    hyphens The hyphens utilities like hyphens-manual
    inset The inset utilities like end-44
    invert The invert utilities like invert-0
    isolation The isolation utilities like isolate
    justifyContent The justify-content utilities like justify-center
    justifyItems The justify-items utilities like justify-items-end
    justifySelf The justify-self utilities like justify-self-end
    letterSpacing The letter-spacing utilities like tracking-normal
    lineClamp The line-clamp utilities like line-clamp-4
    lineHeight The line-height utilities like leading-9
    listStyleImage The list-style-image utilities like list-image-none
    listStylePosition The list-style-position utilities like list-inside
    listStyleType The list-style-type utilities like list-disc
    margin The margin utilities like me-28
    maxHeight The max-height utilities like max-h-44
    maxWidth The max-width utilities like max-w-80
    minHeight The min-height utilities like min-h-44
    minWidth The min-width utilities like min-w-36
    mixBlendMode The mix-blend-mode utilities like mix-blend-hard-light
    objectFit The object-fit utilities like object-fill
    objectPosition The object-position utilities like object-left-top
    opacity The opacity utilities like opacity-50
    order The order utilities like order-8
    outlineColor The outline-color utilities like outline-green-800
    outlineOffset The outline-offset utilities like outline-offset-2
    outlineStyle The outline-style utilities like outline-dashed
    outlineWidth The outline-width utilities like outline-2
    overflow The overflow utilities like overflow-x-hidden
    overscrollBehavior The overscroll-behavior utilities like overscroll-y-contain
    padding The padding utilities like pe-28
    placeContent The place-content utilities like place-content-between
    placeItems The place-items utilities like place-items-center
    placeSelf The place-self utilities like place-self-end
    placeholderColor The placeholder color utilities like placeholder-red-600
    placeholderOpacity The placeholder color opacity utilities like placeholder-opacity-25
    pointerEvents The pointer-events utilities like pointer-events-none
    position The position utilities like absolute
    preflight Tailwind's base/reset styles
    resize The resize utilities like resize-y
    ringColor The ring-color utilities like ring-green-800
    ringOffsetColor The ring-offset-color utilities like ring-offset-green-800
    ringOffsetWidth The ring-offset-width utilities like ring-offset-2
    ringOpacity The ring-opacity utilities like ring-opacity-50
    ringWidth The ring-width utilities like ring-4
    rotate The rotate utilities like rotate-6
    saturate The saturate utilities like saturate-100
    scale The scale utilities like scale-x-95
    scrollBehavior The scroll-behavior utilities like scroll-auto
    scrollMargin The scroll-margin utilities like scroll-me-28
    scrollPadding The scroll-padding utilities like scroll-pe-28
    scrollSnapAlign The scroll-snap-align utilities like snap-end
    scrollSnapStop The scroll-snap-stop utilities like snap-normal
    scrollSnapType The scroll-snap-type utilities like snap-y
    sepia The sepia utilities like sepia-0
    size The size utilities like size-0.5
    skew The skew utilities like skew-x-12
    space The "space-between" utilities like space-x-4
    stroke The stroke utilities like stroke-green-700
    strokeWidth The stroke-width utilities like stroke-1
    tableLayout The table-layout utilities like table-auto
    textAlign The text-align utilities like text-right
    textColor The text-color utilities like text-green-800
    textDecoration The text-decoration utilities like overline
    textDecorationColor The text-decoration-color utilities like decoration-green-800
    textDecorationStyle The text-decoration-style utilities like decoration-dotted
    textDecorationThickness The text-decoration-thickness utilities like decoration-4
    textIndent The text-indent utilities like indent-28
    textOpacity The text-opacity utilities like text-opacity-50
    textOverflow The text-overflow utilities like overflow-ellipsis
    textTransform The text-transform utilities like lowercase
    textUnderlineOffset The text-underline-offset utilities like underline-offset-2
    textWrap The text-wrap utilities like text-nowrap
    touchAction The touch-action utilities like touch-pan-right
    transform The transform utility (for enabling transform features)
    transformOrigin The transform-origin utilities like origin-bottom-right
    transitionDelay The transition-delay utilities like delay-200
    transitionDuration The transition-duration utilities like duration-200
    transitionProperty The transition-property utilities like transition-colors
    transitionTimingFunction The transition-timing-function utilities like ease-in
    translate The translate utilities like translate-x-full
    userSelect The user-select utilities like select-text
    verticalAlign The vertical-align utilities like align-bottom
    visibility The visibility utilities like invisible
    whitespace The whitespace utilities like whitespace-pre
    width The width utilities like w-2.5
    willChange The will-change utilities like will-change-scroll
    wordBreak The word-break utilities like break-words
    zIndex The z-index utilities like z-30

    Setting Up multiple Configuration

    For projects with multiple CSS files and different Tailwind settings, use the @config directive to select the config file for each CSS file.

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

    Managing References in JavaScript

    You may need to use your configuration values in your JavaScript code, like when adding styles to a React Vue component. Tailwind's resolveConfig helper makes it easy to access these values by combining them into a single object.

    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 Types

    Tailwind CLI adds types automatically, but if you need to do it yourself, add a line above your config.

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