Get started with 33% off your first certification using code: 33OFFNEW

Using Tailwind CSS with pre-processors

2 min read
Published on 20th February 2024

Tailwind CSS has gained popularity for its utility-first approach, offering a fast and efficient way to write CSS. However, some developers may still want to use CSS pre-processors like Sass or Less for their additional features like variables, mixins, and nested syntax. This article explores how to use Tailwind CSS alongside these pre-processors, combining their strengths for an enhanced styling workflow.

Understanding the Compatibility

Tailwind CSS can be integrated with pre-processors such as Sass, SCSS, or Less. While Tailwind's utility classes largely reduce the need for complex CSS writing, pre-processors can be beneficial for defining custom styles, themes, or leveraging their advanced features.

Setting Up Your Environment

Before integrating Tailwind with a pre-processor, ensure you have a project setup with Tailwind CSS installed. You can follow the official Tailwind CSS installation guide for this. Additionally, install the pre-processor of your choice (Sass/SCSS, Less, etc.).

Step 1: Installing Tailwind CSS with Pre-processors

If you're using a build tool like Webpack, you can set up Tailwind with Sass/SCSS or Less as follows:

For Sass/SCSS:

  1. Install Sass:
npm install sass --save-dev
  1. Configure Your Build Tool: Ensure your build tool compiles Sass/SCSS files. For example, in Webpack, you might use sass-loader.

  2. Import Tailwind in Your Sass/SCSS File:

@import "tailwindcss/base";
@import "tailwindcss/components";
@import "tailwindcss/utilities";

For Less:

  1. Install Less:

    npm install less --save-dev
    
  2. Configure Your Build Tool: Set up your build tool to compile Less files.

  3. Import Tailwind in Your Less File:

@import (css) "tailwindcss/base.css";
@import (css) "tailwindcss/components.css";
@import (css) "tailwindcss/utilities.css";

Step 2: Combining Tailwind with Pre-processor Features

With Tailwind integrated, you can now use the features of your pre-processor alongside Tailwind classes.

Example with Sass/SCSS:

@import "tailwindcss/base";
@import "tailwindcss/components";
@import "tailwindcss/utilities";

$primary-color: #4dc0b5;

.btn-primary {
  @apply text-white bg-blue-500;
  background-color: $primary-color;
  &:hover {
    @apply bg-blue-700;
  }
}

Example with Less:

@import (css) "tailwindcss/base.css";
@import (css) "tailwindcss/components.css";
@import (css) "tailwindcss/utilities.css";

@primary-color: #4dc0b5;

.btn-primary {
  .text-white;
  .bg-blue-500;
  background-color: @primary-color;
  &:hover {
    .bg-blue-700;
  }
}

Step 3: Building Your Custom Styles

You can now create styles using both Tailwind utilities and pre-processor features. This approach is particularly useful for:

  • Theming: Define theme-specific variables (colors, fonts, etc.) using pre-processors and apply them in your styles.
  • Custom Components: Create custom components using Tailwind’s @apply directive along with pre-processor features like mixins or functions.
  • Nested Syntax: Utilize the nested syntax of pre-processors for more readable and maintainable CSS.

Integrating Tailwind CSS with CSS pre-processors combines the best of both worlds: the utility-first approach of Tailwind and the advanced features of pre-processors. This synergy enhances the developer experience and offers more flexibility and power in styling web applications.