Color module
Metro UI has a built-in module for working with colors. You can manipulate and transform colors and can create any color schemes.
About
All routines for works with colors are in the object Metro.colors
. Module works with formats:
rgb
,
rgba
,
hex
,
hsv
,
hsl
and
cmyk
.
You can use color conversion functions, as well as functions for generating common color schemes
monochromatic
,
complementary
,
split-complementary
,
double-complementary
,
analogous
,
triadic
,
tetradic
and
square
.
Also you can use special functions
grayscale
,
darken
,
lighten
.
Formats
Module works with any formats: rgb
,
rgba
,
hex
,
hsv
,
hsl
and
cmyk
.
Each format is used as an object
, exclude hex
format. It stored as a string
.
Color | Desc |
---|---|
hex |
A hex color is specified with: #RRGGBB .
RR (red), GG (green) and BB (blue) are hexadecimal integers between 00 and FF specifying the intensity of the color.
For example, #0000FF is displayed as blue, because the blue component is set to its highest value (FF) and the others are set to 00.
|
rgb |
A rgb color is specified with: {r, g, b} object.
An RGB color value is specified with: rgb(red, green, blue).
Each parameter (red, green, and blue) defines the intensity of the color as an integer between 0 and 255.
For example, rgb(0, 0, 255) is rendered as blue, because the blue parameter is set to its highest value (255) and the others are set to 0.
|
rgba |
A rgba color is specified with: {r, g, b, a} object.
An RGBA color value is specified with: rgb(red, green, blue, alpha).
Each parameter (red, green, and blue) defines the intensity of the color as an integer between 0 and 255 and alpha specified opacity from 0 to 1.
|
hsv |
HSV stands for hue, saturation, and value. A hsv color is specified with: {h, s, v} object.
|
hsl |
HSL stands for hue, saturation, and lightness. A hsl color is specified with: {h, s, l} object.
|
cmyk |
CMYK colors is a combination of CYAN , MAGENTA , YELLOW , and BLACK .
A cmyk color is specified with: {c, m, y, k} object.
|
Palettes
Module contains three color palettes: metro
- 21 colors, standard
- 140 colors and mix metro
and standard
with metro in priority.
You can get color names with function palette(name)
var metro = Metro.colors.palette(Metro.colors.PALETTES.METRO);
var standard = Metro.colors.palette(Metro.colors.PALETTES.STANDARD);
var all = Metro.colors.palette(Metro.colors.PALETTES.ALL);
...result for metro
[
"lime", "green", "emerald", "blue", "teal", "cyan", "cobalt",
"indigo", "violet", "pink", "magenta", "crimson", "red", "orange",
"amber", "yellow", "brown", "olive", "steel", "mauve", "taupe"
]
You can get color hex
value with function color(name, palette)
.
var col = Metro.colors.color("cyan", Metro.colors.PALETTES.METRO);
...value for col is #1ba1e2
Check & convert
Metro UI contains functions for check color values and convert colors from onw to others.
Check functions
The following functions are used to check the color value:
Function | Desc |
---|---|
isColor(val) |
Check if value is a Metro UI color value |
isHEX(val) |
Check if value is a hex color value |
isRGB(val) |
Check if value is a rgb color value |
isRGBA(val) |
Check if value is a rgba color value |
isHSV(val) |
Check if value is a hsv color value |
isHSL(val) |
Check if value is a hsl color value |
isHSLA(val) |
Check if value is a hsla color value |
isCMYK(val) |
Check if value is a hsl color value |
is(val) |
Return type of color value |
isLight(color) |
Return true if color is light |
isDark(color) |
Return true if color is dark |
Convert functions
The following functions are used to convert a color value from one to others in Metro UI color formats:
Function | Desc |
---|---|
toHEX(val) |
Any type color value to hex: #RRGGBB |
toRGB(val) |
Any type color value to rgb: {r, g, b} |
toRGBA(val, alpha) |
Any type color value to rgba: {r, g, b, a} |
toHSV(val) |
Any type color value to hsv: {h, s, v} |
toHSL(val) |
Any type color value to hsl: {h, s, l} |
toHSLA(val) |
Any type color value to hsla: {h, s, l, a} |
toCMYK(val) |
Any type color value to hsl: {c, m, y, k} |
var cm = Metro.colors;
var c = "#cc0000";
cm.toHEX(c); // #cc0000
cm.toRGB(c); // {r: 204, g: 0, b: 0}
cm.toRGBA(c, .5); // {r: 204, g: 0, b: 0, a: 0.5}
cm.toHSV(c); // {h: 0, s: 1, v: 0.8}
cm.toHSL(c); // {h: 0, s: 1, l: 0.4}
cm.toCMYK(c); // {c: 0, m: 100, y: 100, k: 20}
The following functions are used to convert a color value to string value:
Function | Desc |
---|---|
toString(val) |
Return stringify value for color: #RRGGBB , rgb(r, g, b) , rgba(r, g, b, a) , hsv(h, s, v) , ... |
var cm = Metro.colors;
var c = "#cc0000";
cm.toHEX().toString(c); // #cc0000
cm.toRGB().toString(c); // rgb(204,0,0)
cm.toRGBA().toString(c); // rgba(204,0,0,1)
Tone functions
Metro UI color module contains functions to change color tone:
grayscale
,
lighten
and
darken
.
Function | Desc |
---|---|
grayscale(color) |
Calculate grayscale color for color value |
lighten(color, percent) |
Lighten color. Percent value must be from 0 to 100. |
darken(color, percent) |
Darken color. Percent value must be from 0 to 100. |
var cm = Metro.colors;
var c = "#cc0000";
cm.grayscale(c); // #2b2b2b
cm.lighten(c, 10); // #d60a0a
cm.darken(c, 10); // #c20000
Schemes
Metro UI color module contains function getScheme()
or createScheme()
. This function generate any color schemes from base color:
monochromatic
,
complementary
,
split-complementary
,
double-complementary
,
analogous
,
triadic
,
tetradic
and
square
.
Function | Desc |
---|---|
getScheme(color, name, |
Generate color scheme from base color.
color - color in Metro UI color module format,
name - scheme name,
format - format for return values (hex, rgb, rgba, hsv, hsl, cmyk),
options - additional options.
|
var cm = Metro.colors;
var colors = cm.getScheme("#cc0000", "mono", "hex", {algorithm: 1});
Options
Options | Desc |
---|---|
angle |
Angle for analogous and split-complementary schemes |
algorithm |
Algorithm for monochromatic schemes (1, 2, 3, 4) |
tint1, tint2 |
This option use for monochromatic schemes 1 for create two left colors |
shade1, shade2 |
This option use for monochromatic schemes 1 for create two right colors |
distance |
This option use for monochromatic schemes 2, 3 and determines how many colors will be generated |
step |
This option use for monochromatic schemes 2, 3, 4 and determines with what step the color will be generated. Default is 0.1 . Value must be in range from 0 to 1. |
alpha |
This option use for default alpha channel value for rgba colors. |
Also you can set options with function setup({...})
.
var cm = Metro.colors, colors;
cm.setup({
alpha: .5,
algorithm: 1
})
colors = cm.getScheme("#cc0000", "mono", "rgba");
Monochromatic
Monochromatic colors are all the colors (tones, tints and shades ) of a single hue. Monochromatic color schemes are derived from a single base hue and extended using its shades, tones and tints. Tints are achieved by adding white and shades and tones are achieved by adding a darker color, grey or black. Monochromatic color schemes provide opportunities in art and visual communications design as they allow for a greater range of contrasting tones that can be used to attract attention, create focus and support legibility.
var cm = Metro.colors,
colors, color = "#ffff00";
colors = cm.getScheme(color, "mono", "hex");
Analogous
Analogous (or adjacent colors) is a color scheme using one base color and two secondary colors placed symetrically around it on the color wheel. The base color is main, while the secondary colors should be used only for highlights and accents. It always looks very elegant and clear. There is no tension in the palette, and typically it’s uniformly all warm, or all cold. If a base color on the warm-cold border is chosen, the color with opposite “temperature” may be used for accenting the other two colors.
var cm = Metro.colors,
colors, color = "#ffff00";
colors = cm.getScheme(color, "analog", "hex");
Complementary
Complementary is a color scheme using one base color and its complement, the color on the exact opposite side of the color wheel. The base color is main and dominant, while the complementary color is used only as an accent.
var cm = Metro.colors,
colors, color = "#ffff00";
colors = cm.getScheme(color, "complement", "hex");
Split-complementary
Split-complementary is a color scheme using one base color and two secondary colors. Instead of using a complementary color, two colors placed symetrically around it on the color wheel are used. The base color is main, while the secondary colors should be used only for highlights and accents.
var cm = Metro.colors,
colors, color = "#ffff00";
colors = cm.getScheme(color, "split", "hex");
Double-complementary
Double-complementary is a color scheme using two sets of base color and their complements with next rules on wheel: 180 °, -30 °, 180 °. Both base colors are equivalent, cannot be decided which one should be the main color (though a designer could choose one). Less distance between two base colors causes less tension in the result. However, this scheme is always more "nervous” and “action” than other schemes. While working with it, we have to take care especially of relations between one color and the complement of its adjacent color.
var cm = Metro.colors,
colors, color = "#ffff00";
colors = cm.getScheme(color, "double", "hex");
Tetradic
Tetraqic is a color scheme using two sets of base color and their complements with next rules on wheel: 180 °, 30 °, 180 °. Both base colors are equivalent, cannot be decided which one should be the main color (though a designer could choose one). Less distance between two base colors causes less tension in the result. However, this scheme is always more "nervous” and “action” than other schemes. While working with it, we have to take care especially of relations between one color and the complement of its adjacent color.
var cm = Metro.colors,
colors, color = "#ffff00";
colors = cm.getScheme(color, "tetra", "hex");
Square
A square is a color scheme, a special variant of the dual color scheme, with the equal distance between all colors. All four colors are distributed evenly around the color wheel, causing there is no clear dominance of one color. The scheme is always vibrant, nervous and colorful, there is equal tension between all colors. Square is very aggressive color scheme, requiring very good planning and very sensitive approach to relations of these colors.
var cm = Metro.colors,
colors, color = "#ffff00";
colors = cm.getScheme(color, "square", "hex");
Triadic
A triad is a color scheme, a special variant of the split-complementary color scheme, with the equal distance between all colors. All three colors are distributed evenly around the color wheel, causing there is no clear dominance of one color. The scheme is always vibrant and colorful, designers should use it and balance very carefully to maintan the desired effects and color meaning.
var cm = Metro.colors,
colors, color = "#ffff00";
colors = cm.getScheme(color, "triadic", "hex");
Additional examples: schemes 1, schemes 2, grayscale.
Websafe colors
You can get websafe
color from any. To get it, use function websafe(color)
or specific for color format
hex2websafe
,
rgb2websafe
,
rgba2websafe
,
hsv2websafe
,
hsl2websafe
and
cmyk2websafe
.
var cm = Metro.colors,
color = "#9d4232";
cm.websafe(color); // #993333