<color-chart>

<color-chart>

Display lists of colors as a scatterplot or line chart.

Features

Examples

Basic usage

Plotting a single color scale:

<color-chart y="oklch.l">
	<color-scale colors="#e3f2fd, #bbdefb, #90caf9, #64b5f6, #42a5f5, #2196f3, #1e88e5, #1976d2, #1565c0, #0d47a1"
	info="L: oklch.l, C: oklch.c, H: oklch.h"></color-scale>
</color-chart>

By default, the other coordinate would be the index of the color in the list, but you can specify it explicitly:

<color-chart y="oklch.l">
	<color-scale colors="50: #e3f2fd, 100: #bbdefb, 200: #90caf9, 300: #64b5f6, 400: #42a5f5, 500: #2196f3, 600: #1e88e5, 700: #1976d2, 800: #1565c0, 900: #0d47a1"></color-scale>
</color-chart>

You can also specify a whole label, and if it contains a number, the number will become the X coordinate:

<color-chart y="oklch.c">
	<color-scale colors="Red 50: #fef2f2, Red 100: #fee2e2, Red 200: #fecaca, Red 300: #fca5a5, Red 400: #f87171, Red 500: #ef4444, Red 600: #dc2626, Red 700: #b91c1c, Red 800: #991b1b, Red 900: #7f1d1d, 950: #450a0a"></color-scale>
	<color-scale colors="Orange 50: #fff7ed, Orange 100: #ffedd5, Orange 200: #fed7aa, Orange 300: #fdba74, Orange 400: #fb923c, Orange 500: #f97316, Orange 600: #ea580c, Orange 700: #c2410c, Orange 800: #9a3412, Orange 900: #7c2d12, Orange 950: #431407"></color-scale>
	<color-scale colors="Yellow 50: #fefce8, Yellow 100: #fef9c3, Yellow 200: #fef08a, Yellow 300: #fde047, Yellow 400: #facc15, Yellow 500: #eab308, Yellow 600: #ca8a04, Yellow 700: #a16207, Yellow 800: #854d0e, Yellow 900: #713f12, Yellow 950: #422006"></color-scale>
</color-chart>

(Colors courtesy of Tailwind)

Plotting hues

Hues will be shifted as needed to produce a better result:

<color-chart y="hsl.h" info="L: oklch.l, C: oklch.c, H: oklch.h">
	<color-scale colors="hsl(5 50% 50%), hsl(355 50% 50%), hsl(10 50% 50%), hsl(-10 50% 50%)"></color-scale>
</color-chart>
<color-chart y="oklch.h" info="L: oklch.l, C: oklch.c, H: oklch.h">
	<color-scale class="js" info="L: oklch.l, C: oklch.c, H: oklch.h" colors="10: #41031a, 20: #67082e, 30: #890e3f, 40: #ac1450, 50: #e01d6b, 60: #f2638c, 70: #fb8ea8, 80: #ffb4c5, 90: #ffdce3, 95: #ffeef1, 05: #2c0110" style="--color-count: 11;"></color-scale>
	<color-scale class="wa" info="L: oklch.l, C: oklch.c, H: oklch.h" colors="10 (WA) / 10: #3e0817, 20 (WA) / 20: #630d29, 30 (WA) / 30: #88123b, 40 (WA) / 40: #ab174e, 50 (WA) / 50: #de1d6a, 60 (WA) / 60: #ee669b, 70 (WA) / 70: #f391b9, 80 (WA) / 80: #f7b8d3, 90 (WA) / 90: #fbdeeb, 95 (WA) / 95: #fdeef5, 05 (WA) / 05: #26050c" style="--color-count: 11;"></color-scale>
</color-chart>

The info attribute

You can use the info attribute to show information about the color scale points. Currently, the only type of information supported is color coords (in any color space), but more will be added in the future.

The format of this attribute is analogous to the one of <color-swatch>.

<color-chart y="oklch.c" info="L: oklch.l, C: oklch.c, H: oklch.h">
	<color-scale colors="50: #eff6ff, 100: #dbeafe, 200: #bfdbfe, 300: #93c5fd, 400: #60a5fa, 500: #3b82f6, 600: #2563eb, 700: #1d4ed8, 800: #1e40af, 900: #1e3a8a, 950: #172554"></color-scale>
	<color-scale colors="50: #ecfeff, 100: #cffafe, 200: #a5f3fc, 300: #67e8f9, 400: #22d3ee, 500: #06b6d4, 600: #0891b2, 700: #0e7490, 800: #155e75, 900: #164e63, 950: #083344"></color-scale>
	<color-scale colors="50: #f0fdfa, 100: #ccfbf1, 200: #99f6e4, 300: #5eead4, 400: #2dd4bf, 500: #14b8a6, 600: #0d9488, 700: #0f766e, 800: #115e59, 900: #134e4a, 950: #042f2e"></color-scale>
</color-chart>

Reactively changing the Y coordinate:

<label>Coord:
	<select onchange="this.parentNode.nextElementSibling.y = this.value">
		<option selected>oklch.l</option>
		<option>oklch.c</option>
		<option>oklch.h</option>
	</select>
</label>
<color-chart y="oklch.l">
	<color-scale colors="Red 50: #fef2f2, Red 100: #fee2e2, Red 200: #fecaca, Red 300: #fca5a5, Red 400: #f87171, Red 500: #ef4444, Red 600: #dc2626, Red 700: #b91c1c, Red 800: #991b1b, Red 900: #7f1d1d, 950: #450a0a"></color-scale>
	<color-scale colors="Orange 50: #fff7ed, Orange 100: #ffedd5, Orange 200: #fed7aa, Orange 300: #fdba74, Orange 400: #fb923c, Orange 500: #f97316, Orange 600: #ea580c, Orange 700: #c2410c, Orange 800: #9a3412, Orange 900: #7c2d12, Orange 950: #431407"></color-scale>
	<color-scale colors="Yellow 50: #fefce8, Yellow 100: #fef9c3, Yellow 200: #fef08a, Yellow 300: #fde047, Yellow 400: #facc15, Yellow 500: #eab308, Yellow 600: #ca8a04, Yellow 700: #a16207, Yellow 800: #854d0e, Yellow 900: #713f12, Yellow 950: #422006"></color-scale>
</color-chart>

Reactively setting/changing the colors:

<label>Colors:
	<select onchange="this.parentNode.nextElementSibling.firstElementChild.colors = this.value">
		<option selected value="">None</option>
		<option value="Yellow 50: #fefce8, Yellow 100: #fef9c3, Yellow 200: #fef08a, Yellow 300: #fde047, Yellow 400: #facc15, Yellow 500: #eab308, Yellow 600: #ca8a04, Yellow 700: #a16207, Yellow 800: #854d0e, Yellow 900: #713f12, Yellow 950: #422006">Yellow</option>
		<option value="Orange 50: #fff7ed, Orange 100: #ffedd5, Orange 200: #fed7aa, Orange 300: #fdba74, Orange 400: #fb923c, Orange 500: #f97316, Orange 600: #ea580c, Orange 700: #c2410c, Orange 800: #9a3412, Orange 900: #7c2d12, Orange 950: #431407">Orange</option>
		<option value="Red 50: #fef2f2, Red 100: #fee2e2, Red 200: #fecaca, Red 300: #fca5a5, Red 400: #f87171, Red 500: #ef4444, Red 600: #dc2626, Red 700: #b91c1c, Red 800: #991b1b, Red 900: #7f1d1d, 950: #450a0a">Red</option>
	</select>
</label>
<color-chart y="oklch.l">
	<color-scale></color-scale>
</color-chart>

Reference

Attributes & Properties

Attribute Property Property type Default value Description
x x string null The coord to plot on the X axis, if any
y y string "oklch.l" The coord to plot on the Y axis, if any
info info string - Comma-separated list of coords of the color point to be shown.

Events

Name Description

CSS variables

Name Type Description
--color-scale-type discrete or normal Whether to draw lines between consecutive points. Works on individual color swatches (to prevent drawing a line to the next point), entire color scales, or the entire chart.

Parts

Name Description
axis The axis line
ticks The container of ticks
tick A tick mark
label A label on the axis

Installation

To install all color elements, check out the instructions on the homepage. The rest of this section is about using only <color-chart>.

The quick and dirty way is straight from the CDN (kindly provided by Netlify):

<script src="https://elements.colorjs.io/src/color-chart/color-chart.js" type="module"></script>

or in JS:

import "https://elements.colorjs.io/src/color-chart/color-chart.js";

If you are using npm to manage your dependencies, you can import it via:

import "color-elements/color-chart";

or:

import { ColorChart } from "color-elements";