HTML5ANDCSS3 logoHTML5ANDCSS3Tools and Tutorials
  • Insights
  • Verify Certificate
HTML5ANDCSS3 logoHTML5ANDCSS3Tools and Tutorials
HTML5ANDCSS3 logoHTML5ANDCSS3Tools and Tutorials

HTML5andCSS3.org helps developers learn modern frontend skills with practical tutorials, production-ready snippets, and fast web tools built for everyday coding.

Quick Links

  • About Us
  • Contact Us
  • Privacy Policy
  • Copyright
  • Disclaimer

Top Tools

  • Try It Editor
  • JSON Formatter
  • CSS Minifier
  • HTML Minifier
  • Base64 Encoder / Decoder

Contact

  • business@html5andcss3.org
Newsletter

Learn at your own pace, practice with useful tools, and build websites you're proud of.

© 2011-2026 html5andcss3.org. All rights reserved.

How to Use

CSS Tutorial

CSS Introduction

What is CSSCSS SyntaxHow to Add CSSCSS Comments

CSS Foundations

Cascade & InheritanceCSS SpecificityCSS UnitsBox SizingCSS VariablesCSS Math Functions

CSS Selectors

CSS Element SelectorCSS Class SelectorCSS ID SelectorCSS Universal SelectorCSS Group SelectorCSS CombinatorsCSS Attribute SelectorsCSS Pseudo ClassesCSS Pseudo Elements

CSS Colors and Backgrounds

CSS ColorsCSS HEX ColorsCSS RGB ColorsModern ColorsCSS Background ColorCSS Background ImageLayered Backgrounds

CSS Text & Fonts

CSS Text ColorCSS Text AlignmentCSS Text DecorationCSS Font FamilyCSS Font SizeWeb Fonts & TypographyText Wrapping

CSS Box Model

CSS MarginCSS PaddingCSS BorderCSS OutlineCSS Width and Height

CSS Layout

Normal FlowCSS DisplayCSS PositionAnchor PositioningCSS FloatCSS OverflowCSS Z-indexIntrinsic SizingAspect Ratio & Object FitMulti-column Layout

CSS Flexbox

Flex ContainerFlex DirectionJustify ContentAlign ItemsFlex WrapFlex Item Sizing

CSS Grid

CSS Grid ContainerCSS Grid ColumnsCSS Grid RowsCSS Grid GapCSS Grid Layout ExampleGrid PlacementGrid AreasCSS Subgrid

CSS Lists, Tables & Forms

CSS ListsCSS TablesCSS Form StylingCSS Input Fields

CSS Effects

CSS ShadowsCSS GradientsCSS FiltersCSS OpacityClipping & MaskingBlending & BackdropScroll Snap

CSS Animations & Transitions

CSS TransformCSS 2D TransformCSS 3D TransformCSS TransitionsEntry & Exit TransitionsCSS AnimationsScroll AnimationsView TransitionsMotion Paths

CSS Responsive Design

CSS Media QueriesResponsive LayoutMobile First DesignContainer QueriesPreference Media QueriesFeature Queries

Modern CSS Authoring

Cascade LayersNesting & ScopeLogical PropertiesGenerated Content

CSS Accessibility

Accessible CSSCSS ThemingModern Form StylingCSS User Interface

CSS Output & Performance

Print StylesCSS PerformanceCSS ArchitectureDebugging CSS

CSS Reference

CSS At-rulesCSS FunctionsCSS Tutorial PDF

CSS Projects

Responsive CSS Project
  1. Home
  2. /
  3. Tutorials
  4. /
  5. CSS Tutorial
  6. /
  7. Cascade & Inheritance

CSS Foundations

Cascade & Inheritance

Understand how the browser resolves competing declarations and which values pass from parent elements to their children. You will learn the exact order the browser follows, how inherited values fill unresolved properties, and how to trace a declaration without guessing.

The cascade is CSS’s conflict-resolution system. It decides which declaration supplies a value; inheritance runs afterward and lets selected computed values pass from a parent to its descendants.

Most difficult-looking CSS bugs begin with a simple question: where did this value come from? A property may have been declared directly, inherited from an ancestor, supplied by the user agent, or replaced by a rule in another layer. Reading those possibilities in the browser’s actual decision order turns an override problem into a short investigation. This topic also connects with CSS Specificity and Cascade Layers.

How a winning declaration is chosen

For each property on each element, the browser considers relevance, origin and importance, cascade layer, specificity, scoping proximity, and source order. The first difference settles the result. Specificity matters, but it is not the first step.

Example

css

p { color: slateblue; }

.article p { color: seagreen; }

/* The class selector makes this declaration win for paragraphs in .article. */

Inheritance is a separate mechanism

If no declaration wins for a property, an element may inherit its parent’s computed value. Text properties such as color and font-family usually inherit. Box properties such as margin, padding, and border usually do not.

Example

css

body {
  color: #243447;
  font-family: system-ui, sans-serif;
}

button {
  font: inherit;
  color: inherit;
}

Control keywords

  • inherit takes the parent’s computed value.
  • initial uses the property’s specification-defined initial value.
  • unset behaves like inherit for inherited properties and initial for the rest.
  • revert rolls back to an earlier cascade origin.
  • revert-layer rolls back within the current cascade layer.

Cascade Keywords

KeywordPurposeExample
inheritUses the parent element's computed value.color: inherit
initialUses the property's initial value.display: initial
unsetActs as inherit or initial according to the property.margin: unset
revertRolls back to an earlier cascade origin.font: revert

Complete Example

Run the complete document below in the Try It editor. Resize the preview or interact with the controls where the example calls for it.

Complete runnable example

html

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Cascade & Inheritance example</title>
  <style>
    * { box-sizing: border-box; }
    body {
      margin: 0;
      padding: 2rem;
      font-family: system-ui, sans-serif;
      line-height: 1.5;
    }
    main { max-width: 70rem; margin-inline: auto; }
    article, section, aside, form, .card, .panel {
      padding: 1rem;
      border: 1px solid #cbd5e1;
      border-radius: 0.6rem;
    }

p { color: slateblue; }

.article p { color: seagreen; }

/* The class selector makes this declaration win for paragraphs in .article. */

body {
  color: #243447;
  font-family: system-ui, sans-serif;
}

button {
  font: inherit;
  color: inherit;
}
  </style>
</head>
<body>
  <main class="article"><h1>Cascade demo</h1><p>This paragraph inherits its font and wins the more specific color rule.</p><button>Inherited button text</button></main>
</body>
</html>

Browser Support

Feature
Chrome
Edge
Firefox
Safari
Core cascade and inheritance11211

Versions show the first stable desktop release with unprefixed support. Data source: MDN Browser Compatibility Data 8.0.8. A partial-support note is included where it changes how the example behaves.

Notes

  • When a CSS rule appears to be ignored, the cause is usually the cascade-not a broken browser.
  • Test the example with real content, keyboard input, browser zoom, and the narrowest layout your project supports.
  • Use a fallback when the support table shows that one of your required browsers predates the feature.

Conclusion

Trace the cascade first, then inheritance. That order explains most declarations that appear to be ignored.

When debugging, inspect the computed property and work backward to its winning declaration. If no declaration supplied the value, check whether the property inherits and which ancestor established it. This method is faster and safer than adding a stronger selector until the page happens to look right.

PreviousCSS CommentsNextCSS Specificity