Back to all reviewers

Avoid brittle CSS patterns

cypress-io/cypress
Based on 2 comments
Css

Write CSS that prioritizes maintainability and reduces the likelihood of conflicts or brittleness. This includes using semantic class names instead of raw HTML element selectors, and avoiding explicit z-index values when possible.

Code Style Css

Reviewer Prompt

Write CSS that prioritizes maintainability and reduces the likelihood of conflicts or brittleness. This includes using semantic class names instead of raw HTML element selectors, and avoiding explicit z-index values when possible.

Raw HTML selectors like span:last-child button and span are more brittle and harder to understand than semantic class names. Similarly, explicit z-index values like z-index: 99999 can lead to stacking conflicts where developers “find themselves fighting with their own code on who’s on top.”

Instead, prefer:

  • Semantic class names that clearly describe the component’s purpose
  • Natural document order and portal-based stacking for z-index management
  • CSS patterns that are self-documenting and less likely to break when the HTML structure changes

Example of brittle pattern:

span:last-child button,
.play {
  padding: 1px 10px;
}

.ui-blocker {
  z-index: 99999; /* Explicit z-index can cause conflicts */
}

Better approach:

.header-action-button,
.play-button {
  padding: 1px 10px;
}

.ui-blocker {
  /* Rely on natural stacking order instead of explicit z-index */
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
}
2
Comments Analyzed
Css
Primary Language
Code Style
Category

Source Discussions