D3 implementation of human-friendly HSL
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.



This module implements the HSLuv (Hue, Saturation, Lightness) color space.


If you use NPM, npm install d3-hsluv. AMD, CommonJS, and vanilla environments are supported. In vanilla, a d3 global is exported:

<script src="https://d3js.org/d3-color.v1.min.js"></script>

var yellow = d3.hsluv("yellow"); // {l: 85.9, u: 100, v: 97.1, opacity: 1}


Try d3-hsluv in your browser.

API Reference

# d3.hsluv(l, u, v[, opacity])
# d3.hsluv(specifier)
# d3.hsluv(color)

Constructs a new hsluv color. The channel values are exposed as l, u and v properties on the returned instance.

If l, u and v are specified, these represent the channel values of the returned color; an opacity may also be specified. If a CSS Color Module Level 3 specifier string is specified, it is parsed and then converted to the hsluv color space. See d3.color for examples. If a color instance is specified, it is converted to the RGB color space using color.rgb and then converted to hsluv.

# d3.interpolateHsluv(a, b) <>

Returns an HSLuv color space interpolator between the two colors a and b. The colors a and b need not be in HSLuv; they will be converted to HSLuv using d3.hsluv. If either color’s hue or chroma is NaN, the opposing color’s channel value is used. The shortest path between hues is used. The return value of the interpolator is an RGB string.

# d3.interpolateHsluvLong(a, b) <>

Like interpolateHsluv, but does not use the shortest path between hues.