Title
Content
Modern CSS architectures, naming conventions, and organizational patterns for scalable stylesheets
Modern CSS architectures, naming conventions, and organizational patterns for scalable stylesheets
/ Block /
.card {}/ Element /
.card__title {}
.card__content {}
.card__footer {}
/ Modifier /
.card--featured {}
.card__title--large {}
Title
Content
/ kebab-case (recommended) /
.my-component-name {}/ camelCase /
.myComponentName {}
/ PascalCase /
.MyComponentName {}
/ snake_case /
.my_component_name {}
styles/
āāā abstracts/
ā āāā _variables.scss
ā āāā _mixins.scss
ā āāā _functions.scss
āāā base/
ā āāā _reset.scss
ā āāā _typography.scss
āāā components/
ā āāā _buttons.scss
ā āāā _cards.scss
āāā layout/
ā āāā _header.scss
ā āāā _footer.scss
āāā pages/
ā āāā _home.scss
ā āāā _about.scss
āāā themes/
ā āāā _dark.scss
āāā vendors/
ā āāā _bootstrap.scss
āāā main.scss/ Low specificity (good) /
.button {}
.button-primary {}/ High specificity (avoid) /
div.container > ul.list > li.item > a.link {}
/ Use data attributes for state /
[data-state="active"] {}
[aria-expanded="true"] {}
.component {
--component-padding: 1rem;
--component-color: blue;padding: var(--component-padding);
color: var(--component-color);
}
.component--large {
--component-padding: 2rem;
}