PostCSS plugin to insert colors for link-related pseudo-classes.
Introduction
Adding link-related pseudo-classes can be a total pain. Just look at how much garbage we have to write!
a { color: red; } a:visited { color: red; } a:focus { color: red; } a:hover { color: red; } a:active { color: red; }
This plugin allows you to simplify the above syntax into the following:
a { @link-colors all red; }
You can override individual pseudo-classs like so:
a { @link-colors all red { focus: white; hover: blue; } }
This transpiles into:
a { color: red; } a:visited { color: red; } a:focus { color: white; } a:hover { color: blue; } a:active { color: red; }
Of course, you don't have to color all link-related pseudo-classes if you don't want. Just get rid of the all parameter to make the colors inclusive:
a { @link-colors red { hover: white; } }
This transpiles into:
a { color: red; } a:hover { color: white; }
Link-related pseudo-classes are written in LVHA-order: :link — :visited — :hover — :active with the following variations:
- The
:linkpseudo-class is replaced by justcolor, as it covers not only links, but buttons and other elements as well. - The
:focuspseudo-class is placed before or after:hover, depending on the order in which you specify it; thus, the desired effect.
Installation
$ npm install postcss-all-link-colors
Usage
JavaScript
postcss([ require('postcss-all-link-colors') ]);
TypeScript
import * as postcssAllLinkColors from 'postcss-all-link-colors'; postcss([ postcssAllLinkColors ]);
Options
None at this time.
Testing
Run the following command:
$ npm test
This will build scripts, run tests and generate a code coverage report. Anything less than 100% coverage will throw an error.
Watching
For much faster development cycles, run the following commands in 2 separate processes:
$ npm run build:watch
Compiles TypeScript source into the ./dist folder and watches for changes.
$ npm run watch
Runs the tests in the ./dist folder and watches for changes.