Skip to content

Instantly share code, notes, and snippets.

@lerouxb
Created October 12, 2010 14:37
Show Gist options
  • Select an option

  • Save lerouxb/622264 to your computer and use it in GitHub Desktop.

Select an option

Save lerouxb/622264 to your computer and use it in GitHub Desktop.
function getRGB(color) {
// http://plugins.jquery.com/files/jquery.color.js.txt
var result;
// Check if we're already dealing with an array of colors
if (color && color.constructor == Array && color.length == 3)
return color;
// Look for rgb(num,num,num)
if (result = /rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(color))
return [parseInt(result[1]), parseInt(result[2]), parseInt(result[3])];
// Look for rgb(num%,num%,num%)
if (result = /rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(color))
return [parseFloat(result[1])*2.55, parseFloat(result[2])*2.55, parseFloat(result[3])*2.55];
// Look for #a0b1c2
if (result = /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(color))
return [parseInt(result[1],16), parseInt(result[2],16), parseInt(result[3],16)];
// Look for #fff
if (result = /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(color))
return [parseInt(result[1]+result[1],16), parseInt(result[2]+result[2],16), parseInt(result[3]+result[3],16)];
// Otherwise, we're most likely dealing with a named color
return colors[jQuery.trim(color).toLowerCase()];
}
function getBrightness(color) {
// http://stackoverflow.com/questions/596216/formula-to-determine-brightness-of-rgb-color
var rgb = getRGB(color);
var r = rgb[0]/255;
var g = rgb[1]/255;
var b = rgb[2]/255;
return Math.sqrt(0.241*r*r + 0.691*g*g + 0.068*b*b);
}
$('.colours input').each(function() {
// it would probably be better to set "bright" and "dim" classes rather than hardcoding the colours here
var $this = $(this);
var bg = $this.val();
var brightness = getBrightness(bg);
// I find that 0.75 works a bit better as a cut-off than 0.5
var fg = (brightness > 0.75) ? '#000000' : '#ffffff';
$this.css('background-color', bg);
$this.css('color', fg);
var bordercolor = (brightness > 0.75) ? '#cccccc' : bg;
$this.css('border-color', bordercolor);
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment