CSS, JS 사용을 위해 요소들을 구분하는 방법들

A. 태그 위주

article { /* ... */ }
article aside { /* ... */ }
article aside figure { /* ... */ }
article div header { /* ... */ }
article ul li { /* ... */ }
article div ul li { /* ... */ }
article div ul li.special { /* ... */ }
/* ... */

B. 클래스 위주

.card { /* ... */ }
.card .thumb { /* ... */ }
.card .thumb .image { /* ... */ }
.card .body .title { /* ... */ }
.card .body .list { /* ... */ }
.card .body .list .list-item { /* ... */ }
.card .body .list .list-item.special { /* ... */ }

C. BEM(Block Element Modifier)

.card { /* ... */ }
.card__thumb { /* ... */ }
.card__image { /* ... */ }
.card__title { /* ... */ }
.card__list { /* ... */ }
.card__list-item { /* ... */ }
.card__list-item--special { /* ... */ }