CSS Naming Conventions

Writing scalable and maintainable CSS can be challenging. CSS naming conventions like BEM, OOCSS, and SMACSS help improve code structure, readability, and reusability.

1. BEM (Block-Element-Modifier)

BEM (Block-Element-Modifier) is a methodology that makes CSS more modular and reusable by using a structured naming convention.

Structure:

  • Block: Represents a standalone entity (e.g., .button, .nav).
  • Element: A part of a block, dependent on it (e.g., .button__icon).
  • Modifier: A variation of a block or element (e.g., .button--large).

Example:

/* BEM Example */
.button {
    background: blue;
    color: white;
    padding: 10px 20px;
}

.button--large {
    font-size: 18px;
    padding: 15px 30px;
}

.button__icon {
    margin-right: 5px;
}


Try It Now

2. OOCSS (Object-Oriented CSS)

OOCSS (Object-Oriented CSS) promotes reusability by separating structure from skin.

Principles:

  • Separation of Structure and Skin: Keep layout (e.g., grid) separate from visual styles (e.g., colors).
  • Reusability: Use generic class names to avoid repetition.

Example:

/* OOCSS Example */
.box {
    padding: 20px;
    border-radius: 5px;
}

.box--primary {
    background-color: blue;
    color: white;
}

Reusable Box

Try It Now

3. SMACSS (Scalable and Modular Architecture for CSS)

SMACSS is a modular CSS architecture that categorizes styles into five groups:

  • Base: Default styles for elements (e.g., body, h1).
  • Layout: Defines major page sections (e.g., .header, .sidebar).
  • Module: Reusable components (e.g., .card, .button).
  • State: Defines variations (e.g., .is-active, .is-hidden).
  • Theme: Custom styling for themes (e.g., .theme-dark).

Example:

/* SMACSS Example */
.button {
    background: gray;
    color: white;
    padding: 10px;
}

.button.is-active {
    background: green;
}


Try It Now

Conclusion

Choosing a CSS naming convention like BEM, OOCSS, or SMACSS improves code readability and reusability. Each approach has its strengths, so use the one that best fits your project.