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");
    }

});