jQuery Color Swatch
Creates a dribbble-esque color swatch from a list of hex color values.
HTML
<ul class="swatch">
<li class="color">#FEFEFE</li>
<li class="color">#34474B</li>
<li class="color">#2B3D42</li>
<li class="color">#25363A</li>
<li class="color">#61949E</li>
<li class="color">#A1AAAD</li>
<li class="color">#51666A</li>
<li class="color">#537C83</li>
</ul>
<ul class="swatch">
<li class="color">#FBFAF8</li>
<li class="color">#D1A440</li>
<li class="color">#12243D</li>
<li class="color">#212F44</li>
<li class="color">#A6A9B1</li>
<li class="color">#545657</li>
<li class="color">#B69142</li>
<li class="color">#837966</li>
</ul>
<ul class="swatch">
<li class="color">#CB9548</li>
<li class="color">#C78F3C</li>
<li class="color">#57452B</li>
<li class="color">#B98845</li>
<li class="color">#5F4A29</li>
<li class="color">#9D6F36</li>
<li class="color">#53350D</li>
<li class="color">#D5B38B</li>
<li class="color">#D5B3ff</li>
</ul>
CSS
body {
background: #f0f0f0;
min-width: 900px;
}
ul.swatch {
list-style: none;
width: 85%;
margin: 40px auto;
padding: 20px 0;
}
.swatch li {
color: #000000;
display: inline;
float: left;
height: 40px;
width: 90px;
text-indent: -9999px;
text-align: center;
}
.swatch li:hover {
height: 49px;
width: 110px;
vertical-align: middle;
text-indent: 0;
}
.swatch li:last-child {
webkit-border-top-right-radius: 9px;
-webkit-border-bottom-right-radius: 9px;
-moz-border-radius-topright: 9px;
-moz-border-radius-bottomright: 9px;
border-top-right-radius: 9px;
border-bottom-right-radius: 9px;
}
.swatch li:first-child {
webkit-border-top-left-radius: 9px;
-webkit-border-bottom-left-radius: 9px;
-moz-border-radius-topleft: 9px;
-moz-border-radius-bottomleft: 9px;
border-top-left-radius: 9px;
border-bottom-left-radius: 9px;
}
JavaScript
$("li.color").each(function () {
var color = $(this).text();
$(this).css("background-color", color);
//if the swatch color is too dark
//change font color to something lighter
var c = color.substring(1); // strip #
var rgb = parseInt(c, 16); // convert rrggbb to decimal
var r = (rgb >> 16) & 0xff; // extract red
var g = (rgb >> 8) & 0xff; // extract green
var b = (rgb >> 0) & 0xff; // extract blue
var luma = 0.2126 * r + 0.7152 * g + 0.0722 * b; // per ITU-R BT.709
if (luma < 85) {
$(this).css("color", "#ffffff");
}
});