Huebee is a JavaScript library for creating user-centric color pickers. Huebee displays a limited set of colors so users view all colors at a glance, make clear decisions, and select a color with a single click.
Install
Download
-
CSS:
- huebee.min.css minified, or
- huebee.css un-minified
-
JavaScript:
- huebee.pkgd.min.js minified, or
- huebee.pkgd.js un-minified
CDN
Link directly to Huebee files on unpkg.
<link rel="stylesheet" href="https://unpkg.com/huebee@2/dist/huebee.min.css">
<script src="https://unpkg.com/huebee@2/dist/huebee.pkgd.min.js"></script>
Package managers
Install with npm: npm install huebee
Install with Bower: bower install huebee --save
Getting started
Include the Huebee .css
and .js
files in your site.
<link rel="stylesheet" href="/path/to/huebee.css" media="screen">
<script src="/path/to/huebee.pkgd.min.js"></script>
Huebee works on an anchor element.
<!-- use inputs so users can set colors with text -->
<input class="color-input" value="#F80" />
<!-- anchors can be buttons -->
<button class="color-button">Select color</button>
<!-- anchors can be any element -->
<span class="current-color">Current color</span>
The Huebee color picker will open whenever the anchor is clicked or focused.
Initialize with vanilla JavaScript
var hueb = new Huebee( element, options )
// element => {Element} anchor element, or
// {String} selector string
// options => {Object}
// hueb => Huebee instance
// initialize on single element with selector string
var hueb = new Huebee( '.color-input', {
// options
notation: 'hex',
saturations: 2,
});
// initialize on single element with element
var elem = document.querySelector('.color-input');
var hueb = new Huebee( elem, {
// options
});
// initials on multiple elements with loop
var elems = document.querySelectorAll('.color-input');
for ( var i=0; i < elems.length; i++ ) {
var elem = elems[i];
var hueb = new Huebee( elem, {
// options
});
}
Initialize with jQuery
// initialize on single element with jQuery
var elem = $('.color-input')[0];
var hueb = new Huebee( elem, {
// options
});
// initialize on multiple elements with jQuery
$('.color-input').each( function( i, elem ) {
var hueb = new Huebee( elem, {
// options
});
});
Initialize with HTML
You can initialize Huebee in HTML, without writing any JavaScript. Add data-huebee
attribute to an element.
<input class="color-input" data-huebee />
Options can be set in value of data-huebee
. Options set in HTML must be valid JSON. Keys need to be quoted, for example "notation"
:. The data-huebee
attribute value is set with single quotes '{...}'
, but JSON entities use double-quotes "string"
.
<input class="color-input" data-huebee='{ "notation": "hex", "saturations": 2 }' />
Options
The demos below are opened by default with staticOpen: true
to be easily viewable.
setText
Sets elements’ text to color.
// default
// setText: true
// set text of anchor element
Set setText
to a selector string to set the text of multiple elements.
setText: '.set-text-elem'
// set text of .set-text-elem elements
<div>
<span class="swatch set-text-elem"></span>
<span class="swatch set-text-elem"></span>
<span class="swatch set-text-elem"></span>
</div>
<!-- add class to anchor to set text of anchor as well -->
<input class="set-text-elem" />
setBGColor
Sets elements’ background color to color. Also sets text color so text is visible with light and dark colors.
// default
// setBGColor: true
// set background-color of anchor element
Set setBGColor
to a selector string to set the background color of multiple elements.
setBGColor: '.set-bg-elem'
// set text of .set-bg-elem elements
<div>
<span class="swatch set-bg-elem"></span>
<span class="swatch set-bg-elem"></span>
<span class="swatch set-bg-elem"></span>
</div>
<!-- add class to anchor to set background-color of anchor as well -->
<input class="set-bg-elem" />
hues
Number of hues of the color grid. Hues are slices of the color wheel — red, yellow, green, cyan, blue, magenta. Default hues: 12
.
hues: 6
hue0
The first hue of the color grid. Default hue0: 0
.
// start color grid at cool blue
hue0: 210
shades
Number of shades of colors and shades of gray between white and black. Default shades: 5
.
shades: 7
saturations
Number of sets of saturation of the color grid. saturations: 3
will display saturations of 100%, 66%, and 33%. Default saturations: 3
saturations: 2
// 100% saturation & 50% saturation
customColors
Custom colors added to the top of the grid. Values may be any valid color value: '#19F', '#E5A628', 'darkgray', 'hsl(210, 90%, 55%)'
.
customColors: [ '#C25', '#E62', '#EA0', '#19F', '#333' ]
Set shades: 0
to disable normal colors and use only custom colors. Use hues
to set the number of columns.
customColors: [ '#C25', '#E62', '#EA0', '#ED0', '#6C6', '#19F', '#258', '#333' ],
shades: 0,
hues: 4,
notation
Text syntax of colors values.
// default
// notation: 'shortHex'
// #F00, #F80, #FF0
notation: 'hex'
// #FF0000, #FF8000, #FFFF00
notation: 'hsl'
// hsl(0, 100%, 50%), hsl(30, 100%, 50%), hsl(60, 100%, 50%)
staticOpen
Displays open and stays open. Default disabled staticOpen: false
.
// default
// staticOpen: false
// open on click or focus
// close on click outside or blur
staticOpen: true
// display open and stay open
className
Class added to Huebee element. Useful for CSS, see below.
className: 'custom-huebee-class'
CSS
Set the size of the color grid with by setting the size of .huebee__cursor
in CSS. This allows you to size the color grid responsively with media queries.
/* 30px grid size */
.huebee__cursor {
width: 30px;
height: 30px;
}
Style Huebee with your own CSS. Look over huebee.css to see what styles you can customize.
.huebee__container {
top: 20px; /* position */
background: #777;
border: 5px solid #222;
border-radius: 0;
}
.huebee__cursor {
border: 5px solid #19F;
}
.huebee {
/* disable reveal/hide transition */
transition: none;
}
.huebee__close-button {
background: red;
}
.huebee__close-button__x {
stroke-width: 2;
}
Use className
option for specificity.
<input data-huebee='{ "className": "dark-picker" }' />
<input data-huebee='{ "className": "light-picker" }' />
.dark-picker .huebee__container {
background: #222;
}
.light-picker .huebee__container {
background: #F8F8F8;
}
Inputs
With <input>
elements, set value
to set the initial color.
<input value="#08F" />
<!-- set initial color to #08F -->
Methods
setColor
hueb.setColor('pink')
// sets Huebee color
// which in turn sets text and background colors if enabled
// and selects swatch on grid, if matched
// color may be any valid color value
hueb.setColor('transparent')
hueb.setColor('#F90')
hueb.setColor('#BADA55')
hueb.setColor('hsl(210, 90%, 50%)')
Use setColor
to add UI to set specific colors.
<div class="button-row">
<button data-color="#08F">Blue</button>
<button data-color="#2D2">Green</button>
<button data-color="#F80">Orange</button>
</div>
buttonRow.addEventListener( 'click', function( event ) {
var buttonColor = event.target.getAttribute('data-color');
if ( buttonColor ) {
hueb.setColor( buttonColor );
}
});
open
hueb.open()
// opens Huebee
close
hueb.close()
// closes Huebee
Events
change
hueb.on( 'change', function( color, hue, sat, lum ) {
console.log( 'color changed to: ' + color )
})
// use change event to change SVG fill & stroke
fillHueb.on( 'change', function( color ) {
circle.style.fill = color;
});
strokeHueb.on( 'change', function( color ) {
circle.style.stroke = color;
});
Properties
hueb.color // => #F00
// {String} - text color value
hueb.hue // -> 0
// {Number} - angle of hue of color, 0...360
hueb.sat // -> 1
// {Number} - saturation of color, 0...1
hueb.lum // -> 0.5
// {Number} - luminance of color, 0...1
hueb.isLight // -> false
// {Boolean} - true if color is light, false is color is dark
// useful for setting legible text color on top of color