color-scales v3.0.2
color-scales
A utility mimicking Microsoft Excel's Color Scales conditional formatting, which returns the color of a value in a linear gradient between two color endpoints with defined min and max values.
Basic CodePen Demo
Usage
Install from NPM
npm i color-scalesImport it in your project:
const ColorScale = require("color-scales")Alternatively, import directly from Skypack, a free CDN for Javascript/TypeScript packages:
import ColorScale from "https://cdn.skypack.dev/color-scales";Important Classes
ColorScale Class
The ColorScale has the following properties:
min(number): The minimum value of the range.max(number): The maximum value of the range.colorStops(string[]): An array of colors that act as color stops for the gradient. The colors are spaced out evenly. At least two colors must be passed in. Example: '#ff0000', '#00ff00', '#0000ff'alpha(number): The alpha value that indicates the level of transparency/opagueness. E.g. Alpha of 0.8 means 20% transparent. Optional, defaults to 1.
Its constructor is ColorScale(min, max, colorStops, alpha);
The ColorScale class has the following functions:
getColor: Param: number. Returns an instanceColorcorresponding to the numerical value supplied, calculated based on the class properties above.
Color Class
The Color class is an unexported class. It has the following properties:
r: An integer representing the intensity of the red hue. Ranges from 0 to 255.g: An integer representing the intensity of the green hue. Ranges from 0 to 255.b: An integer representing the intensity of the blue hue. Ranges from 0 to 255.a: The alpha value that indicates the level of transparency/opagueness. E.g. Alpha of 0.8 means 20% transparent. Defaults to 1.
The Color class has the following functions:
toHexString: Returns the equivalent hex string representation. The string will be in lower case. Does not support transparency. Example: "#7f7f7f"toRGBString: Returns the equivalent RGB string representation. The string will be in lower case. Does not support transparency. Example: "rgb(127,127,127)"toRGBAString: Returns the equivalent RGBA string representation. The string will be in lower case. Example: "rgba(127,127,127, 0.8)"
Example Usage
Constructor
The following import and constructor creates a ColorScale object.
const ColorScale = require("color-scales");
// Alternatively, import from Skypack, a free CDN for Javascript/TypeScript packages:
// import ColorScale from "https://cdn.skypack.dev/color-scales";
let colorScale = new ColorScale(min, max, colorStops, alpha); // alpha is optional. defaults to 1where min, max, colorStops, and alpha are replaced by their intended value;
Example:
const ColorScale = require("color-scales");
let colorScale = new ColorScale(0, 100, ["#ffffff", "#000000"], 0.5); // white to black from 0 to 100 with 50% transparencyGet Color Object
Example:
const ColorScale = require("color-scales");
let colorScale = new ColorScale(0, 100, ["#ffffff", "#000000"], 0.5); // red to green from 0 to 100
let colorObj = colorScale.getColor(50); // returns new Color(127, 127, 127, 0.5)Get Hex String
Example 1 (full opacity):
let colorScale = new ColorScale(0, 100, ["#ffffff", "#000000"]); // passing in no alpha value defaults it to 1
let hexStr = colorScale.getColor(50).toHexString(); // returns "#7f7f7f"Example 2 (0.5 alpha):
let colorScale = new ColorScale(0, 100,[ "#ffffff", "#000000"], 0.5);
let hexStr = colorScale.getColor(50).toHexString(); // returns "#3f3f3f"As this will give acolor equivalent to if the transparent color was overlaid on a white background. This package version does not support 8-digit hex values. Thus, if users want to implement true transparency, it is recommended that they use the RGBA string option documented in the next section.
Get RGB String
Example 1 (full opacity):
let colorScale = new ColorScale(0, 100, ["#ffffff", "#000000"]); // passing in no alpha value defaults it to 1
let rgbStr = colorScale.getColor(50).toRGBString(); returns "rgba(127,127,127)"Example 2 (0.5 alpha):
let colorScale = new ColorScale(0, 100, ["#ffffff", "#000000"], 0.5);
let rgbStr = colorScale.getColor(50).toRGBString(); // returns "rgba(63,63,63)"As this will give color equivalent to if the transparent color was overlaid on a white background. Thus, if users want to implement true transparency, it is recommended that they use the RGBA string option documented in the next section.
Get RGBA String
Example 1 (full opacity):
let colorScale = new ColorScale(0, 100, ["#ffffff", "#000000"]);
let rgbaStr = colorScale.getColor(50).toRGBAString(); // returns "rgba(127,127,127)"Example 2 (50% transparent):
let colorScale = new ColorScale(0, 100, ["#ffffff", "#000000"], 0.5);
let rgbaStr = colorScale.getColor(50).toRGBAString(); // returns "rgba(127,127,127, 0.5)"