Menu
×
   ❮     
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS DSA TYPESCRIPT ANGULAR ANGULARJS GIT POSTGRESQL MONGODB ASP AI R GO KOTLIN SWIFT SASS VUE GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE INTRO TO PROGRAMMING INTRO TO HTML & CSS BASH RUST

HTML and CSS Colors & Backgrounds


HTML & CSS: Colors & Backgrounds

Color sets the mood and guides focus.

Learn how to use CSS color functions, gradients, and backgrounds to create rich visual design.


Color notations

  • Keywords: color: royalblue;
  • Hex: #0F172A
  • RGB/RGBA: rgb(15, 23, 42), rgba(14, 165, 233, 0.2)
  • HSL/HSLA: hsl(210, 40%, 15%)

Note: RGB mixes red, green, and blue values, while HSL stands for hue (color), saturation (intensity), and lightness (brightness).

If you want to read more or get an in-depth understanding, see CSS Colors, RGB, and HSL in the CSS tutorial.


CSS variables for color palettes

Define reusable color tokens as custom properties on :root, then reference them with var(--name) in your rules.

This keeps palettes consistent and easy to theme.

Syntax: :root { --color-primary: #2563eb; } .hero { background: var(--color-primary); }

Palette

:root {
  --color-primary: #2563eb;
  --color-primary-dark: #1d4ed8;
  --color-neutral-900: #0f172a;
}
.hero { background: var(--color-primary); color: #fff; }
.hero h1 { color: #fff; }
Try it Yourself »

This snippet declares --color-primary and uses var(--color-primary) to color a hero section.

Updating the variable updates all usages automatically.

Learn more: CSS Variables.

Note: CSS variables (also called custom properties) let you store colors once and reuse them across styles.



Background properties

  • background-color - solid colors.
  • background-image - images or gradients.
  • background-size - cover, contain, or dimensions.
  • background-position, background-repeat, background-attachment.

If you want to read more about CSS Background or get an in-depth understanding, go to CSS Background in our CSS tutorial.


Gradients

Create smooth color transitions using linear-gradient, radial-gradient, or conic-gradient.

Note: Gradients blend two or more colors together, and you can control direction and shape.

Gradient

.hero {
  background-image: linear-gradient(135deg, #6366f1 0%, #ec4899 100%);
}
Try it Yourself »

The rule applies a linear-gradient(135deg, ...) as the element’s background-image, producing a diagonal blend from indigo to pink.

Explore: CSS Gradients.


Overlay techniques

Layer gradients above images using multiple backgrounds.

Overlay

.hero {
  background-image:
    linear-gradient(rgba(15, 23, 42, 0.6), rgba(15, 23, 42, 0.6)),
    url("images/mountains.jpg");
  background-size: cover;
  background-position: center;
}
Try it Yourself »

Multiple backgrounds are layered from top to bottom: the semi-transparent gradient is listed first so it overlays the image.

background-size: cover ensures the image fills the area.


Background patterns

Use data URIs or CSS gradients for subtle patterns without extra assets.


Color contrast and accessibility

  • Ensure contrast ratio of at least 4.5:1 for body text and 3:1 for large text.
  • Test with tools like the W3C contrast checker.
  • Avoid using color alone to convey meaning; add icons or text.

If you want to read more about CSS Accessibility or get an in-depth understanding, go to CSS Accessibility in our CSS tutorial.


Hero with gradient overlay and image

This example composes a full-viewport hero using two layered backgrounds: a semi-transparent gradient on top of a photo.

It centers content with CSS Grid.

Syntax highlights: multiple background-image values separated by commas, plus responsive clamp() sizing for headings.

Example

<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="styles.css" type="text/css">
</head>
<body>
  <section class="hero">
    <div>
      <h1>Design with color</h1>
      <p>Layer gradients and imagery with accessible contrast.</p>
    </div>
  </section>
</body>
</html>
body {
  margin:0; 
  font-family:"Inter",sans-serif; 
  color:#fff;
}
.hero {
  display:grid; 
  place-items:center; 
  min-height:100vh; 
  text-align:center; 
  padding:0 24px;
  background-image: linear-gradient(135deg, rgba(99,102,241,0.85), rgba(244,114,182,0.85)),
    url("images/mountains.jpg");
  background-size:cover; 
  background-position:center;
}
.hero h1 {
  font-size:clamp(2.5rem, 6vw, 4rem); 
  margin-bottom:16px;
}
.hero p {
  font-size:1.25rem; 
  color:#e0e7ff;
}
Try it Yourself »

The gradient is listed before the image so it sits above it.

The hero fills the viewport with min-height: 100vh, and text remains readable due to the overlay and color choices.



×

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
sales@w3schools.com

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail:
help@w3schools.com

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookies and privacy policy.

Copyright 1999-2025 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS.