mirror of
https://github.com/less/less.js.git
synced 2026-01-23 06:07:56 -05:00
Update contrast function and tests
This commit is contained in:
@@ -263,33 +263,41 @@ colorFunctions = {
|
||||
greyscale: function (color) {
|
||||
return colorFunctions.desaturate(color, new Dimension(100));
|
||||
},
|
||||
contrast: function (color, dark, light, threshold) {
|
||||
contrast: function (color, color1, color2, threshold) {
|
||||
// Return which of `color1` and `color2` has the greatest contrast with `color`
|
||||
// according to the standard WCAG contrast ratio calculation.
|
||||
// http://www.w3.org/TR/WCAG20/#contrast-ratiodef
|
||||
// The threshold param is no longer used, in line with SASS.
|
||||
// filter: contrast(3.2);
|
||||
// should be kept as is, so check for color
|
||||
if (!color.rgb) {
|
||||
return null;
|
||||
}
|
||||
if (typeof light === 'undefined') {
|
||||
light = colorFunctions.rgba(255, 255, 255, 1.0);
|
||||
if (typeof color1 === 'undefined') {
|
||||
color1 = colorFunctions.rgba(0, 0, 0, 1.0);
|
||||
}
|
||||
if (typeof dark === 'undefined') {
|
||||
dark = colorFunctions.rgba(0, 0, 0, 1.0);
|
||||
if (typeof color2 === 'undefined') {
|
||||
color2 = colorFunctions.rgba(255, 255, 255, 1.0);
|
||||
}
|
||||
//Figure out which is actually light and dark!
|
||||
if (dark.luma() > light.luma()) {
|
||||
var t = light;
|
||||
light = dark;
|
||||
dark = t;
|
||||
}
|
||||
if (typeof threshold === 'undefined') {
|
||||
threshold = 0.43;
|
||||
var contrast1, contrast2;
|
||||
var luma = color.luma();
|
||||
var luma1 = color1.luma();
|
||||
var luma2 = color2.luma();
|
||||
// Calculate contrast ratios for each color
|
||||
if (luma > luma1) {
|
||||
contrast1 = (luma + 0.05) / (luma1 + 0.05);
|
||||
} else {
|
||||
threshold = number(threshold);
|
||||
contrast1 = (luma1 + 0.05) / (luma + 0.05);
|
||||
}
|
||||
if (color.luma() < threshold) {
|
||||
return light;
|
||||
if (luma > luma2) {
|
||||
contrast2 = (luma + 0.05) / (luma2 + 0.05);
|
||||
} else {
|
||||
return dark;
|
||||
contrast2 = (luma2 + 0.05) / (luma + 0.05);
|
||||
}
|
||||
if (contrast1 > contrast2) {
|
||||
return color1;
|
||||
} else {
|
||||
return color2;
|
||||
}
|
||||
},
|
||||
argb: function (color) {
|
||||
|
||||
Reference in New Issue
Block a user