1.0.1 • Published 1 year ago

color-changer v1.0.1

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

color-changer

A zero-dependancy, light-weight color modification library to convert between color types and modify color attributes for javascript. This tool can take in a css color string or an object and convert it between several different color specifications including hex, rgb, hsl, and hsv.

import Color from 'color-changer';

let color = new Color('#8cc864');

console.log(color.rgb)              // rgb {r: 140, g: 200, b: 100}
console.log(color.hsl.string());    // hsl(96, 48%, 59%)

Install

$ npm install color-changer

Import

import Color from 'color-changer';

Instantiate

All percentage values may be represented as a decimal value 0.67 or as a percentage string '67%'.

// Empty Color Object
let color = new Color();

RGB

// String
let color = new Color('rgb(143, 188, 143)');
/* -- or -- */
let color = new Color('rgba(143, 188, 143, 0.67));

// Object
let color = new Color({r: 143, g: 188, b: 143});
/* -- or -- */
let color = new Color({r: 143, g: 188, b: 143, a: 0.67});

HEX

// String
let color = new Color('#8fbc8f');
/* -- or -- */
let color = new Color('#8fbc8fab');

// Object
let color = new Color({value: 8fbc8f});
/* -- or -- */
let color = new Color({value: 8fbc8f, a: 0.67});

HSL

// String
let color = new Color('hsl(120, 25%, 65%)');
/* -- or -- */
let color = new Color('hsla(120, 25%, 65%, 0.67));

// Object
let color = new Color({h: 120, s: '25%', l: '65%'});
/* -- or -- */
let color = new Color({h: 120, s: '25%', l: '65%', a: 0.67});

HSV

// String
let color = new Color('hsv(120, 25%, 65%)');
/* -- or -- */
let color = new Color('hsva(120, 25%, 65%, 0.67));

// Object
let color = new Color({h: 120, s: '25%', v: '65%'});
/* -- or -- */
let color = new Color({h: 120, s: '25%', v: '65%', a: 0.67});

NAME

// String
let color = new Color('DarkSeaGreen');

// Object 
let color = new Color({name: 'DarkSeaGreen', a: 0.67})

Usage

import Color from 'color-changer';

// Instantiate Empty Color Object
let color = new Color();

// Instatiate Color Object w/ color
let color = new Color('#3F589F');

Setters

Set the color by color specification using the following setters. CSS strings, arrays, and objects are allowed using the following format.

/* RGB */
color.setRGB('rgb(143, 188, 143)');
color.setRGB('rgba(143, 188, 143, 0.67)')
color.setRGB([143, 188, 143]);
color.setRGB([143, 188, 143, 0.67]);
color.setRGB({r: 143, g: 188, b: 143});
color.setRGB({r: 143, g: 188, b: 143, a: 0.67});

/* HEX */
color.setHEX('#8fbc8f');
color.setHEX('#8fbc8fab');
color.setHEX(['#8fbc8f']);
color.setHEX(['#8fbc8f', 0.67]);
color.setHEX({value: '#8fbc8f'});
color.setHEX({value: '#8fbc8f', a: 0.67});

/* HSL */
color.setHSL('hsl(120, 25%, 65%)');
color.setHSL('hsla(120, 25%, 65%, 0.67)');
color.setHSL([120, '25%', '65%']);
color.setHSL([120, '25%', '65%', 0.67]);
color.setHSL({h: 120, s: '25%', l: '65%'});
color.setHSL({h: 120, s: '25%', l: '65%', a: 0.67});

/* HSV */
color.setHSV('hsv(120, 25%, 65%)');
color.setHSV('hsva(120, 25%, 65%, 0.67)');
color.setHSV([120, '25%', '65%']);
color.setHSV([120, '25%', '65%', 0.67]);
color.setHSV({h: 120, s: '25%', v: '65%'});
color.setHSV({h: 120, s: '25%', v: '65%', a: 0.67});

/* NAME */
color.setNAME('DarkSeaGreen');
color.setNAME(['DarkSeaGreen']);
color.setNAME(['DarkSeaGreen', 0.67]);
color.setNAME({name: 'DarkSeaGreen'});
color.setNAME({name: 'DarkSeaGreen', a: 0.67});

Getters

Get the specific color object or all of the color elements.

/* Colors */
let rgb = color.rgb;
let hex = color.hex;
let hsl = color.hsl;
let hsv = color.hsv;

/* Elements */
let elements = color.elements;

CSS Strings

Each color object can be returned as a string with rounded values.

let color = new Color();
color.setHEX('#8fbc8f');

console.log(color.hsl.string())     // hsl(120, 25%, 65%)
console.log(color.hsv.string())     // hsv(120, 24%, 74%)
console.log(color.rgb.string())     // rgb(143, 188, 143)
console.log(color.hex.string())     // #8fbc8f

color.alpha(0.77);

console.log(color.hsl.string())     // hsla(120, 25%, 65%, 0.77)
console.log(color.hsv.string())     // hsva(120, 24%, 74%, 0.77)
console.log(color.rgb.string())     // rgba(143, 188, 143, 0.77)
console.log(color.hex.string())     // #8fbc8fc4

Luminance

Get the relative luminance of the color based on the WCAG Relative Luminance definition.

let color = new Color();
color.setHEX('#8fbc8f');

/* (Black) 0 <-> 1 (White) */
console.log(color.luminance()); // 0.43789249325969065

Contrast Ratio

Get the contrast ratio of two colors base on the WCAG Contrast Ratio definition.

let color = new Color();
color.setHEX('#8fbc8f');

/* (Same Color) 1 <-> 21 (Black/White) */
console.log(color.contrast(Color('black'))); // 9.757849865193812
/* or */
console.log(color.contrast('black')); // 9.757849865193812

Dark or Light

Get a boolean return value of whether a color is dark or light.

let color = new Color();
color.setHEX('#8fbc8f');

console.log(color.isDark())     // false
console.log(color.isLight())    // true

Color Manipulation

Manipulate to color object directly by altering saturation, lightness, opacity, or hue, negate the color, convert to greyscale, or mix it with another color.

let color1 = new Color('red'),
    color2 = new Color('yellow');

/* Manipulate saturation */
color1.saturate('22%');
color1.desaturate(.22);

/* Manipulate hue */
color1.rotate(90);
color1.rotate('-240deg');

/* Manipulate shade & tint */
color1.lighten(.44);
color1.darken('44%');

/* Manipulate opacity */
color1.fade(0.5);
color1.opaquer('20%');

/* Negate color */
color1.negate();

/* Convert to greyscale */
color1.greyscale();

/* Mix another color */
color1.mix(color2);
color1.mix(Color('blue'));
/* or */
color1.mix(color2, 'add');  // Additive Mix
color1.mix(color2, 'sub');  // Subtractive Mix
/* or */
color1.mix(color2, 'add', 0.6);  // Additive Mix with 60% of color2
color1.mix(color2, 'sub', 0.6);  // Subtractive Mix with 60% of color2  

Credits

This library was inspired by W3 Color Converter and color.

License

Copyright © 2022, Designer's Image. Licensed under the MIT License.

1.0.1

1 year ago

1.0.0

1 year ago

0.1.0

1 year ago

0.0.9

1 year ago

0.0.8

1 year ago

0.0.7

1 year ago

0.0.6

1 year ago

0.0.5

1 year ago

0.0.4

1 year ago

0.0.3

1 year ago

0.0.2

1 year ago

0.0.1

1 year ago