This plugin allows to create and use scoped CSS variables for colors and spacings in your Tailwind CSS project.
For live-examples check out mariohamann.de/tailwindcss-var.
⚠️ This plugin expects you to use Tailwind CSS >2.0 || >3.0 with JIT mode enabled. (Tested with >3.3)- Although this plugin has version "2.x", this is still beta. (I switched to 1.x to mark breaking changes). Please be aware of changes in future. Neverthessless it's already tested in production and works well.
- The plugin works out of the box with default color variations of Tailwind CSS (50, 100, ..., 800, 900). If you want to use other variable variations, you'll find some basic instructions below.
- The plugin now uses "var" as a prefix instead of de dollar sign. (e. g.
$color
->varcolor
), as the TailwindCSS parser had problems parsing the dollar sign in Versions >3.1. (I tried lots different ways to escape the dollar sign, but none of them worked. If you have a solution, please let me know. :)) - The plugin now extends your theme per default. You only have to manually extend your theme, if your color definitions are different from the default ones. (See Modify color variables below.)
-
Add package to your project e. g.
npm install @mariohamann/tailwindcss-var
. -
Add the plugin to your
tailwind.config.js
withrequire('@mariohamann/tailwindcss-var')
. -
Per default the included variables match Tailwind's default color sets (50–950). If you're using different sets, change the variables as described below:
-
To test if everything works, add the following classes to an object with text
varcolor-indigo text-varcolor-500
.
- Define your object once with text-varcolor-600, bg-varcolor-50 etc.
- Fill the variable (dynamically) with e. g. varcolor-pink.
- text-varcolor-600 renders as text-pink-600, bg-varcolor-50 renders as bg-pink-50.
Try it yourself: https://play.tailwindcss.com/BqEnApCXDd.
- Variables are automatically consumable by every child element.
- You can overwrite variables in every child.
- You can overwrite single variants of the variable with other colors or opacities.
Try it yourself: https://play.tailwindcss.com/19SLgiXbMN
- Besides color variables you can set variables for spacings.
- You can use the variables for width, height, margins etc.
- Since version 2.1.0 you can use the variables for fontSize, too.
Try it yourself: https://play.tailwindcss.com/70ezDS1hIy
- You can set and use arbitrary values for both spacings and colors.
- In the example height and roundedness resize perfectly with the width of the object.
Try it yourself: https://play.tailwindcss.com/0r55inbvBq
Out of the box, the plugin extends your theme with the following color and spacing.
{
theme: {
extend: {
colors: {
'varcolor': {
50: 'var(--tw-varcolor-50)',
100: 'var(--tw-varcolor-100)',
200: 'var(--tw-varcolor-200)',
300: 'var(--tw-varcolor-300)',
400: 'var(--tw-varcolor-400)',
500: 'var(--tw-varcolor-500)',
600: 'var(--tw-varcolor-600)',
700: 'var(--tw-varcolor-700)',
800: 'var(--tw-varcolor-800)',
900: 'var(--tw-varcolor-900)',
},
},
spacing: {
'varspacing': 'var(--tw-varspacing)',
},
},
}
}
If you have other color definitions which you want to use with variables, just change the varcolor
-definitions in your theme e. g.:
{
theme: {
extend: {
colors: {
primary: {
light: '#FF88DD',
dark: '#FFFF00',
}
secondary: {
light: 'FF88FF',
dark: '#FF00FF',
}
'varcolor': {
light: 'var(--tw-varcolor-light)',
dark: 'var(--tw-varcolor-dark)',
},
},
},
}
}