일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 데이터통신
- 알고리즘
- 네트워킹
- 한빛아카데미
- java
- ArrayList
- 초연결 사회의 데이터통신과 네트워킹
- 함수
- JLPT
- 단어장
- 백준
- scrolly
- 초연결사회의 데이터통신과 네트워킹
- 스크롤
- React
- html
- 일본어
- Node.js
- 연습문제
- reactjs code snippets
- Algorithm
- 자바
- 자바스크립트
- 라이브러리
- prettier-code formatter
- 이벤트
- quizlet
- gsap
- ScrollToPlugin
- JavaScript
- Today
- Total
umilove98의 블로그
HTML 클래스 속성 작명 BEM 본문
BEM이란 Block Element Modifier의 약칭으로
html 의 요소에 클래스 속성을 부여할 때 그 이름을 지어주는 규칙을 말한다.
요소__일부분 (underscore 2개 사용)
요소--상태 (hyphen 2개 사용)
형태가 있는데
예를 들어
<div class="contianer">
<div class="name"></div><!-- 1번 name-->
<div class="item">
<div class="name"></div><!-- 2번 name-->
</div>
</div>
이러한 형태의 코드가 작성되어 있다고 할 때,
container 라는 클래스를 가진 요소의 자식으로 name(1번), item 클래스를 가진 요소들이 있고 item 클래스의 요소는 다시 name(2번)이라는 클래스를 가진 자식 요소가 있다.
css에서 container 의 자식요소인 name(1번)을 지정하고자 할 때
.container .name{
}
위와 같이 사용하는 경우가 많은데
이런 경우 item의 자식 요소인 name(2번) 까지 지정되어 불편할 수 있다.
이런 경우 각각의 요소를 정확하게 지칭하기 위해서 해당 요소를 포함하고 있는 요소 즉, 부모 요소의 클래스명을 앞에 써 주고 __ underscore 2개를 입력한 후 해당 요소의 클래스명을 입력한다.
<div class="contianer">
<div class="container__name"></div>
<div class="item">
<div class="item__name"></div>
</div>
</div>
이런 식으로 변경하면 중복되던 name이라는 클래스가 어느 요소에 속해 있는지 명확하게 확인되어 편할 수 있다.
여기까지는 요소들간의 관계를 통해 해당 클래스명을 가진 요소가 어느 요소의 일부분인지를 나타내는 방법이었다.
<div class="btn primary"></div>
<div class="btn success"></div>
다음은 이러한 코드가 있다고 하자
각 버튼들의 상태를 다르게 표현하기 위해 다른 클래스들을 부여하는데
해당 코드에서는 primary, success 등의 클래스명이 버튼과 관련되어 있다는 것을 파악하기 어렵다.
<div class="btn btn--primary"></div>
<div class="btn btn--success"></div>
이런 식으로 작성할 경우 클래스명만 보고도 버튼의 상태를 구분하기 위한 클래스명임을 확인할 수 있다.
정리하자면
단어1__단어2 : underscore 2개를 중간에 붙이는 경우 단어2가 단어1의 일부분이고
단어1--단어2 : hyphen 2개를 중간의 붙이는 경우 단어2가 단어1의 상태를 나타낸다.