According to the WHO an estimated 1.3 billion people live with some form of visual impairment. This includes people who are legally blind and people with less than 20/20 vision.
This library helps you achieve the accessibility standards for color contrast outlined in the WCAG 2.0 specification.
npm install @opendevtools/wcag-color
ratio
takes two colors, a foreground color, and background color, and returns a contrast ratio. ratio
accepts most color formats:
- HEX - normal (
#0088ff
), shorthand (#08f
) and without hash (08f
) - RGB -
rgb(255, 255, 255)
- HSL -
hsl(210, 100%, 40%)
ratio(foreground: string, background: string) => number
import { ratio } from '@opendevtools/wcag-color'
ratio('hsl(210, 100%, 40%)', '#ffffff') // 5.57
score
takes two colors and returns a score value. Read more below.
score(foreground: string, background: string) => 'Fail' | 'AA Large' | 'AA' | 'AAA'
import { score } from '@opendevtools/wcag-color'
score('hsl(210, 100%, 40%)', '#ffffff') // AA
scoreFromRatio
takes a ratio and returns a score value.
scoreFromRatio(ratio: number) => 'Fail' | 'AA Large' | 'AA' | 'AAA'
import { scoreFromRatio } from '@opendevtools/wcag-color'
scoreFromRatio(7.5) // AAA
best
takes two colors and a background color and returns the color which is
best suited, from a contrast perspective, for that background color.
best(firstColor: string, secondColor: string, background: string) => string
import { best } from '@opendevtools/wcag-color'
best('#ffffff', '#000000', '#ffffff') // #000000
- Fail - Your text has a contrast ratio of less than
3.0
- AA Large - Least amount of contrast for font size 18px and larger. The ratio is above
3.0
. - AA - What you should aim for with text sizes below 18px. The ratio is at least
4.5
. - AAA - Enhanced contrast with a ratio of at least
7.0
. Valuable for texts that will be read for a longer period of time.