/postcss-contrast

PostCSS plugin to change text color depending on background color contrast

Primary LanguageJavaScriptMIT LicenseMIT

postcss-contrast Travis Build Status

PostCSS plugin to change text color depending on background color contrast. This is generally useful if your writing a mixin or placeholder selector that applies to many scenarios.

TL;DR Use the contrast() function anywhere and get #fff or #000 depending on the lightness of the color you pass in the function.

Install

npm i --save-dev postcss-contrast

Usage

var fs = require('fs');
var postcss = require('postcss');
var customProperties = require('postcss-custom-properties');
var contrast = require('postcss-contrast');

var css = fs.readFileSync('input.css', 'utf8');

var output = postcss()
  .use(customProperties())
  .use(contrast())
  .process(css)
  .css;

PostCSS

/* input.css */

:root {
  --bg-color: #fff;
}

body {
  background-color: var(--bg-color);
  color: contrast(var(--bg-color));
}

Compiled CSS

/* output.css */

body {
  background-color: #fff;
  color: #000;
}

Options

dark (default: #000)

This lets your define a custom black for all contrast functions in your project.

var out = postcss()
  .use(contrast({dark: '#444'}))
  .process(css)
  .css;

light (default: #fff)

This lets your define a custom white for all contrast functions in your project.

var out = postcss()
  .use(contrast({light: '#efefef'}))
  .process(css)
  .css;

Contributing

Make a branch, npm test often, submit a new pull when it passes.

git clone https://github.com/stephenway/postcss-contrast.git
git checkout -b patch-1
npm i
npm test

Resources