Tame Your Stylesheets: A Guide to CSS Nesting

May 14, 2024

CSS is a powerful tool for styling web pages, but as your project grows, stylesheets can become complex and unwieldy. This is where CSS nesting comes in, offering a way to organize your styles in a more intuitive and readable manner.

What is CSS Nesting?

Imagine being able to define styles for child elements directly within the style block of their parent element. That’s the magic of CSS nesting. It allows you to create a hierarchy of styles, mirroring the structure of your HTML document.

Benefits of Nesting

  • Improved Readability: Nested styles group related properties together, making your code easier to scan and understand.
  • Reduced Repetition: No more repeating long selectors for child elements. Nested styles automatically inherit the context of their parent.
  • Better Maintainability: Changes to parent styles propagate to nested styles, keeping your codebase consistent.

How to Use CSS Nesting

CSS nesting is achieved using the greater than symbol (>). Let’s see some examples:

Basic Nesting:

.menu {
  background-color: #f0f0f0;
  padding: 10px;

  > li {  /* Target direct child list items \*/
    display: inline-block;
    margin-right: 10px;
  }
}

Nesting with Multiple Levels:

.card {
  background-color: #fff;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);

  > .card-header {
    padding: 15px;
    border-bottom: 1px solid #ddd;
  }

  > .card-body {
    padding: 20px;
  }
}

The & Placeholder Selector:

The & symbol acts as a placeholder for the parent selector within a nested block. This allows you to target descendant elements while maintaining the nesting hierarchy.

.article {
  margin-bottom: 20px;

  & h2 {  /* Target h2 elements within .article \*/
    font-size: 20px;
    margin-top: 0;
  }

  & p {
    line-height: 1.5;
  }
}

In this example, the & symbol in the nested blocks allows us to target h2 and p elements specifically within the context of the.article class.

Browser Support

Since December 2023, this feature works across the latest devices and major browser versions.
Globally the support is at around 87%. For broader browser support, consider using a CSS preprocessor like Sass or Less, which offers similar nesting functionalities.

Conclusion

CSS nesting is a valuable tool for organizing and maintaining your stylesheets. By leveraging its capabilities, you can create cleaner, more readable, and easier-to-manage code. So, experiment with nesting, keep an eye on browser support, and enjoy the benefits of a more structured styling experience!

Happy coding!