December 10, 2023


Immortalizing Ideas

4 Ways to Define Colors in CSS

Key Takeaways

  • Using Color Names: CSS provides 145 color names for easy and beginner-friendly color selection, but options are limited and may not meet precise design needs.
  • Hexadecimal Color Codes: Hex codes offer a wide range of color options and precise customization, although they can be less intuitive to use and remember.
  • RGB and RGBA Color Values: RGB allows accurate color control with numeric values, while RGBA adds transparency. Ensuring accessible color combinations is important.

Colors are among the most commonly used CSS attributes, playing a vital role in shaping a website’s visual identity, mood, and user experience. CSS offers an array of choices for using color, each tailored to specific design needs and preferences.

While it’s easy to overlook the importance of color definition, your choices can significantly affect your website’s look and feel. Exploring the differences between various methods and how to practically apply and combine them will enhance your ability to create visually appealing websites.

1. Using Color Names

CSS provides a handy way to define colors using names, and there are 145 options available. These color names range from simple “red,” “green,” and “blue” to more specific shades like “coral” or “lavender.”

Using named colors is straightforward: you select a color name like “red” and use it in a CSS property that supports color values. Such properties include the obvious color and background-color, but also border-color, outline-color, and text-shadow, among others.

Color names are handy when you need a temporary color for prototyping or want to keep your code easy to read. Here’s the syntax:

 color_property: color_name;

In this case, simply replace color_name with the specific color you wish to use. For example, if you want to set the text color of a paragraph to red, write:

  color: red;

This will give your paragraphs a red text color:

A block with a border enclosing a header and paragraph text

Pros: They are easy to read and understand in your CSS code. They’re beginner-friendly, work well across browsers, and are handy for quick design ideas.

Cons: They have limited options and may not offer the precise shades you need, limiting design creativity. Additionally, they might not always meet strict accessibility requirements, and support in older systems can vary.

2. Hexadecimal Color Codes

Hexadecimal color codes, often referred to as “hex codes,” are the most common methods of specifying colors in web design. These codes consist of six-character combinations of numbers and letters (0-9, A-F), representing the mix of red, green, and blue (RGB) components in a color.

While they are easy to use, understanding how they work can be challenging. You can take a deep dive into hex codes to understand better. Here’s a basic example of how you might use hex codes in CSS:

 color: #RRGGBB;

In this format, RR, GG, and BB represent the red, green, and blue components, respectively. Each component can range from 00 (no intensity) to FF (maximum intensity). For example, if you want to set the background color of a website header to a specific shade of blue, you can use a hex code like this:

  background-color: #336699;

This will produce a deep blue color:


A white background with a blue shade box at the top holding a text

You can also use a shorthand if each of the three components repeats the same character twice. You can write the above example as:

  background-color: #369;

Pros: Hexadecimal color codes provide a wide range of color options, allowing you to generate detailed and customized shades. They offer smooth control over color choices, making them ideal for complex design requirements.

Cons: Although hex codes are powerful, they can be less intuitive than named colors. You may also encounter the challenge of remembering specific color values. Fortunately, tools for finding the hex codes of colors you come across are available, making the process more manageable.

3. RGB and RGBA Color Values

Like hexadecimal codes, this format lets you specify colors by their red, green, and blue components. This time, however, you can use friendlier integers.

RGB Color Values

RGB color values are the second most commonly used method for defining colors in CSS. “RGB” represents red, green, and blue, expressed as a CSS function with parentheses following it. Inside the parentheses, you assign values to each color channel, ranging from 0 to 255. This lets you control the intensity of red, green, and blue in the color you want to use.

Here’s the syntax:

 rgb(red_value, green_value, blue_value);

Replace red_value, green_value, and blue_value with their respective numeric values. For example, you can achieve white, black, and red colors like those shown in this image:

A set of three equal boxes with colors white, black, and red respectively.

When you set all three color channels (red, green, and blue) to their maximum value of 255, it results in the highest intensity for each channel, creating the color white:​​​​​​

 color: rgb(255, 255, 255);

When you set all three color channels to their minimum value of 0, it represents the absence of color in each channel, resulting in black.

  color: rgb(0, 0, 0);

Setting the red channel to its maximum value of 255, while keeping the other channels at their minimum value of 0, produces the color red:​​​​​

  color: rgb(255, 0, 0);

RGBA Color Values

RGBA functions the same way as RGB, the only difference being the inclusion of an alpha value. The “A” in RGBA stands for alpha, which determines the level of transparency or opacity for the chosen color. A value of 0 represents complete transparency, making the color fully invisible, while a value of 1 represents full opacity, rendering the color fully visible.

RGBA is especially useful when you want to create elements with varying levels of transparency, such as translucent backgrounds or faded text. The full syntax is:

 color: rgba(red_value, green_value, blue_value, alpha_value);

Here, red_value, green_value, and blue_value represent the color channels as in RGB, and alpha_value specifies the level of transparency.

  background-color: rgba(0, 128, 0, 0.5);

In this example, the alpha value of 0.5 assigns 50% transparency to the green color, allowing the content beneath it to show through:

A box with an image underneath a transparent green color

Pros: RGB and RGBA let you control colors accurately, making it easier to pick precise shades and craft visually attractive designs. They are compatible with various web browsers, ensuring your chosen colors look consistent.

Cons: The challenge lies in ensuring accessible color combinations. It’s crucial to pay attention to contrast ratios, mainly when working with transparency in RGBA. The WCAG guidelines can help you ensure your design is accessible.

4. HSL and HSLA Color Values

A computer screen displaying color wheels and different properties

HSL—short for Hue, Saturation, and Lightness—is another CSS function that defines colors. Much like RGB, HSL uses numeric values to represent colors, but it does so differently. You may be familiar with HSL values from UI components in design apps and elsewhere.

Hue: This represents the color itself using degrees on a color wheel, ranging from 0 to 360. Imagine it as selecting a point on a circle, where each degree corresponds to a different color. For instance, 0 and 360 degrees for red, 120 degrees for green, and 240 degrees for blue.

Saturation: Saturation determines the vividness or intensity of the color. It defines the color’s relationship with gray, with 0% being completely grayscale (desaturated) and 100% being fully saturated (vibrant and pure).

Lightness: Lightness represents how bright or dark the color appears. It’s related to the color’s position on the spectrum between black (0%) and white (100%). A value of 50% represents the normal color, while values below 50% darken the color, and values above 50% lighten it.

In addition to HSL, there’s HSLA, where the “A” stands for “alpha”. This is similar to the “A” in RGBA and signifies transparency.

Here’s the syntax:

 color: hsl(hue_value, saturation_percentage, lightness_percentage);

Using this syntax, replace hue_value, saturation_percentage, and lightness_percentage with the specific values you want for each component. For example:

  background-color: hsl(120, 100%, 50%);

In this example, the background color of a div element is set to a vibrant green using HSL values. The 120 represents the hue (green), 100% is for full saturation, and 50% sets the lightness to a balanced level.

Pros: HSL and HSLA offer versatile color calculations using CSS custom properties. They are highly compatible with modern browsers and enable easy adjustments to color lightness.

Cons: Learning HSL involves understanding color science, such as hues and saturations, which can be more challenging than the familiar RGB colors.

Embracing the Power of CSS Colors

There are more methods you can check, and while you’re exploring the different formats for defining colors in CSS, keep in mind that you have the power to shape your website’s appearance, mood, and user experience.

Your choice of color format—whether it’s simple color names, hexadecimal codes, RGB, or HSL—can impact how your audience perceives your site. So, experiment, learn, and find the color definitions that best suit your design goals.