You can’t generate classes dynamically in Tailwind
I wanted to have a dynamic color in Tailwind, using a syntax like this in JSX:
bg-${color}-500
But it wasn’t applied to the page because Tailwind couldn’t find for example the text bg-red-500
in the code, so the code was not added to the final CSS.
So instead I made a list of possible color options in a switch, and generated the class:
const getColorClass = (color) => {
switch (color) {
case 'green': return 'text-green-500'
case 'blue': return 'text-blue-500'
case 'red': return 'text-red-500'
default: return ''
}
}
And I used this function in my classes:
<h1 className={`mt-10 ${getColorClass(color)}`}>
...
A “quick way” is to write the classes you might need in a comment, like this:
/* possible Grid values are grid-cols-1 grid-cols-2 grid-cols-3 */
<div className={`grid grid-cols-${data[0].length}`}>
→ Get my CSS Handbook
I wrote 21 books to help you become a better developer:
- HTML Handbook
- Next.js Pages Router Handbook
- Alpine.js Handbook
- HTMX Handbook
- TypeScript Handbook
- React Handbook
- SQL Handbook
- Git Cheat Sheet
- Laravel Handbook
- Express Handbook
- Swift Handbook
- Go Handbook
- PHP Handbook
- Python Handbook
- Linux Commands Handbook
- C Handbook
- JavaScript Handbook
- Svelte Handbook
- CSS Handbook
- Node.js Handbook
- Vue Handbook
Also, JOIN MY CODING BOOTCAMP, an amazing cohort course that will be a huge step up in your coding career - covering React, Next.js - next edition February 2025