Blog / PostCSS

PostCSS: How to Reuse CSS Class Styles Without Repeating Code

Today I stumbled upon a pretty cool trick in PostCSS, and I just had to share it with you all. Imagine this: you've got a button class .btn loaded with awesome styles, and now you want to apply those exact styles to a .text class. But here's the catch – you don't want to repeat the code. Sounds like a dream, right? Well, let me show you how to make it a reality using PostCSS!

The Problem

You've created a sweet set of styles for a .btn class, and now you need to apply those same styles to a .text class. The problem is, copying and pasting the same styles isn't just tedious – it's bad practice! We want to keep our CSS clean and DRY (Don't Repeat Yourself). So, how can we achieve this in PostCSS?

The Solution: postcss-extend

Enter the postcss-extend plugin! This nifty tool lets you extend styles from one class to another without repeating code. Here's a step-by-step guide on how to use it:

Install PostCSS and the postcss-extend plugin

First things first, let's make sure you have PostCSS and the postcss-extend plugin installed. If not, you can easily install them using npm:

npm install postcss postcss-cli postcss-extend

Set Up Your PostCSS Configuration

Next, you'll need a configuration file for PostCSS. Create a postcss.config.js file in your project root if you don't already have one, and include the postcss-extend plugin like this:

module.exports = {
  plugins: [
    require('postcss-extend')()
  ]
};

Extend Styles in Your CSS

Now, let's get to the fun part. Use the @extend directive in your CSS to apply the styles from .btn to .text without repeating a single line of code. Check out this example:

.btn {
  background-color: blue;
  color: white;
  padding: 10px 20px;
  border: none;
  border-radius: 5px;
  cursor: pointer;
}

.text {
  @extend .btn;
  /* Add any extra styles for .text here */
  font-size: 16px;
}

And there you have it! Using postcss-extend, you can easily reuse styles across multiple classes without the hassle of duplicating code. It's a great way to keep your CSS clean and maintainable. Give it a try and let me know how it works for you!