Created
October 12, 2010 14:37
-
-
Save lerouxb/622264 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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