How to use OKLCH colors in CSS

Understanding color spaces in CSS is essential for web developers who want to create attractive, consistent, and accessible color palettes for their websites and applications. In recent updates to the CSS Color Module, a new color space known as OKLCH (short for Oklch) has made its way into the set of tools available for developers. OKLCH is a functional notation that expresses colors using the parameters of lightness (L), chroma (C), and hue (H). In this article, we will explore the benefits of using OKLCH in CSS and provide practical guidance on how to implement it in your web projects.

If you are wondering what OKLCH is and how to use it in CSS, you’ve come to the right place. OKLCH takes advantage of the Display P3 color space, combining intuitive color selection with broader color gamut support to help you create consistent, accessible designs. For an in-depth understanding of Display P3 and CSS Color Module Level 4, consider reading the specifications provided in the CSS Color Module Level 4 documentation.

What is OKLCH?

OKLCH is a color function that allows you to define colors based on their perceptual properties: L for lightness, C for chroma (colorfulness), and H for hue (the type of color). This method of defining colors is based on the CIELCH color space but optimized for digital displays and the way humans perceive colors. OKLCH is part of the broader Display P3 color space that accommodates a wider range of colors than the traditional sRGB space.

Why Use OKLCH?

Intuitive Color Adjustments

The OKLCH color model makes adjusting color properties more intuitive. For example, lightness affects the perception of how light or dark a color is, while chroma deals with the vividness or mutedness of the color. Hue, meanwhile, refers to the actual color itself, such as red, blue, or green. The OKLCH color space allows for fine-tuned adjustments while maintaining color harmony, which can be challenging in other color spaces like RGB or HSL.

Consistent Contrast

Maintaining consistent contrast is crucial for accessibility. OKLCH can help create design systems with reliable and predictable contrast levels, ensuring that colors meet accessibility standards across different elements and states.

Broad Color Gamut Support

The Display P3 color space, which supports OKLCH colors, has a broader gamut than sRGB, meaning it can display more colors. As more devices come equipped with displays that support wider color gamuts, using OKLCH ensures that your designs will look vibrant on modern screens.

How to Implement OKLCH in CSS

Basic Syntax

The OKLCH syntax follows a straightforward structure, similar to other color functions in CSS:

element {
  color: oklch(lightness, chroma, hue);
}

Lightness

The lightness value in OKLCH ranges from 0 to 100, where 0 is black, 100 is white, and values in between represent various shades of gray.

Chroma

Chroma determines the intensity or purity of the color. A chroma value of 0 results in a neutral color (regardless of the lightness), while higher values intensify the color’s vividness up to the limits of the color space.

Hue

Hue is represented as an angle in degrees from 0 to 360, defining the type of color. Each angle corresponds to a different color on the color wheel.

Alpha Transparency

CSS Color Module Level 4 also introduces a new syntax for alpha transparency, using a slash after the color parameters:

element {
  background-color: oklch(50% 0.15 135 / 0.5);
}

This would set the background color to a semi-transparent color defined by the OKLCH values.

Fallbacks

Since browser support for OKLCH is still growing, providing fallback colors in sRGB or HEX is essential:

element {
  color: #6e6e6e; /* Fallback for browsers that don't support oklch */
  color: oklch(50% 0.15 135);
}

Practical Tips for Creating Color Palettes with OKLCH

Neutral and Thematic Palettes

OKLCH shines when creating neutral color palettes and thematic variations. You can adjust the chroma to produce a range of muted tones for the former and vary both chroma and hue for the latter to create a vivid, cohesive palette.

Design Tokens for State Variants

Utilizing design tokens for different component states (like hover or disabled) using OKLCH is efficient and ensures visual consistency. These tokens can then be implemented across your CSS to quickly apply state-based color variations.

Dark Mode Considerations

When designing for dark mode, OKLCH can help maintain the proper contrast ratios and aesthetic balance between light and dark themes. Adjust the lightness values while keeping chroma and hue consistent to adapt colors for a dark background.

Accessibility Concerns

Always check the contrast ratios of your color choices, especially text against its background. OKLCH aids in making nuanced adjustments to meet WCAG standards without compromising on the design.

Browser Compatibility

As of writing, OKLCH is natively supported in current versions of Chrome, Edge, and Safari. For Firefox and other browsers that might not support OKLCH yet, ensure to provide appropriate fallbacks. To check real-time browser compatibility information, refer to resources like Can I Use.

Conclusion: Embracing OKLCH for Future-Proof Color Design

Adopting OKLCH in your CSS practices can significantly enhance your ability to create consistent, accessible, and vibrant designs suitable for modern displays. Remember to use fallbacks to support a wider range of browsers and to ensure that your colors look great on all devices. As you continue to work with OKLCH, you’ll develop a deeper appreciation for its ease of use and impact on visual design.

Take the opportunity to experiment with OKLCH and observe the improvements in your design process. With its intuitive approach to color creation and maintenance, OKLCH is set to become a staple in CSS color specification. Start leveraging the power of OKLCH today to reach new heights in web design!