[KUIT] id와 class의 차이, css 우선순위, BEM

2024. 3. 24. 23:59·KUIT

이 글은 KUIT Web 파트 부원분들을 대상으로 작성한 글입니다.


id와 class의 차이

html에서 id를 사용할 때도 있고, class를 사용할 때도 있습니다. 이 둘은 무슨 차이일까요?

 

id는 태그에 유일한 이름을 쓸 때 사용됩니다.

→ 단 하나의 요소에만 사용되므로 중복이 불가합니다.

→ class보다 우선적으로 적용이 됩니다.

 

class는 같은 유형으로 반복되는 태그들을 유형별로 분류하고 싶을 때 사용됩니다.

→ 유형별로 동일한 class를 사용할 수 있으므로 중복이 가능합니다.

출처: https://velog.io/@jos9187/id-속성과-class-속성의-차이


css 우선순위

id가 class보다 우선적으로 css가 적용되는 것은 이제 알겠습니다. 그렇다면 전체적으로 css 우선순위는 어떻게 적용되는지 알아볼까요?

 

 

우선순위(숫자가 낮을수록 높은 우선순위)

  1. !important( 예시: .title-box{color: red !important;}
  2. inline(HTML에서 style을 직접 지정했을 때)
  3. id 선택(#id)
  4. class명(.class)
  5. HTML 태그(예시 : h3)
  6. 상위 Element의 속성

출처: https://blinders.tistory.com/87

 

특히 !important는 모든 우선순위를 제치고 적용되기 때문에 정말 피치 못한 상황이 아니라면 사용하지 않는 것이 좋습니다.

 


CSS 방법론 - BEM

CSS 이름을 어떻게 지으면 좋을까요? 이런 고민을 해결해주기 위해 만들어진 CSS 방법론인 BEM을 소개해볼까 합니다.

 

BEM은 Block, Element, Modifier를 뜻합니다.

 

이 세 가지로 구성된 이름을 짓는건데 Block과 Element 사이는 __로, Element와 Modifier 사이는 —로 구분합니다.

 

.header__navigation--navi-text { color: red; }

 

위 예시에서 header는 Block, navigation은 Element, navi-text는 Modifier를 뜻합니다.

 

 

Block은 재사용 가능한 기능적으로 독립적인 페이지 컴포넌트을 뜻합니다.

→ 똑 떼어다가 어딘가에 쓸 수 있는 단위를 말합니다.

→ Block은 Block을 감쌀 수 있습니다.

→ 예시: <form class=”search-form”>

 

Element는 블럭을 구성하는 단위입니다.

→ 자신이 속한 블럭 내에서만 의미를 가지기 때문에 블럭 안에서 떼어다가 다른 데 쓸 수 없습니다.

→ 예시: <form class = “search-form__input”> | <form class = “search-form__button”>

→ element 또한 중첩이 가능합니다.

(그렇다고 <input class="search-form__content__input"/> 쓰는 것이 아닙니다! content와 input 둘 다 search-form의 element이므로 그냥 <input class = “search-form__input” />만 작성하면 됩니다.)

 

Modifier는 Block이나 Element의 속성을 나타냅니다.

→ 다르게 동작하는 Block이나 Element를 만들 때 사용하면 됩니다.

→ boolean 타입과 key-value 타입이 있습니다.

→ 예시: <li class=”tab__item tab__item—focused>

출처: https://nykim.work/15

 

 

그리고 BEM을 사용할 때 지켜야 하는 규칙이 있습니다.

  • 항상 영어 소문자만을 사용합니다. 카멜 케이스 등은 사용하지 않습니다.
  • 일반적으로 한 요소는 하이픈으로 연결합니다. (예를 들면 input-text, button-submit, modal-alert 등등.. )
  • 네이밍의 조합은 형태-의미-순서-상태 순으로 사용합니다. (예시 button-submit-03-disable)
  • 언더스코어는 파일, 폴더, 이미지 등에만 사용합니다(image_elysia_asset_01.png)
  • 숫자를 사용할 때는 확장성을 고려해 1, 2 이런 식으로 표현하지 않고 01, 02, 03… 혹은 001, 002, 003처럼 사용합니다. 앞에 0을 붙이지 않으면, 이미지 정렬 시 1 다음에 2가 오지 않고 10이 오는 등, 정렬 순서가 엉망이 될 수 있기 때문입니다.

출처: https://tech.elysia.land/네이밍-컨벤션-bem-b291ba7bff01

 

 

편안한 밤 되시고 이번 주도 파이팅입니다!!!

저작자표시 비영리 변경금지 (새창열림)

'KUIT' 카테고리의 다른 글

[KUIT] 실행 컨텍스트와 this, 클로저, 호이스팅  (0) 2024.03.30
[KUIT] 2주차 워크북 보충(CSS)  (0) 2024.03.28
[KUIT] CSS 전처리기, SaSS의 특징  (0) 2024.03.26
[KUIT] 1주차 워크북 보충  (0) 2024.03.22
[KUIT] htmx 소개  (1) 2024.03.22
'KUIT' 카테고리의 다른 글
  • [KUIT] 2주차 워크북 보충(CSS)
  • [KUIT] CSS 전처리기, SaSS의 특징
  • [KUIT] 1주차 워크북 보충
  • [KUIT] htmx 소개
퀵차분
퀵차분
웹 프론트엔드 개발자를 꿈꾸고 있습니다 :)
  • 퀵차분
    QC's Devlog
    퀵차분
  • 전체
    오늘
    어제
    • 분류 전체보기 (165)
      • Frontend (28)
        • HTML, CSS (7)
        • Javascript (3)
        • React (11)
        • Typescript (2)
        • Next.js (4)
      • Node.js (3)
      • Study (40)
        • Modern JS Deep Dive (13)
        • SQL (1)
        • Network (1)
        • 프롬프트 엔지니어링 (4)
        • 인공지능 (9)
        • 시스템프로그래밍 (11)
        • 선형대수학 (1)
      • Intern (4)
      • KUIT (20)
      • Algorithm (48)
        • Baekjoon(C++) (26)
        • Programmers(JavaScript) (22)
      • 우아한테크코스(프리코스) (4)
      • Project (7)
        • PROlog (4)
        • Nomadcoder (2)
      • 생각 (4)
      • Event (7)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    오블완
    리액트
    음악추천
    next.js
    프로그래머스
    프롬프트 엔지니어링
    시스템프로그래밍
    자바스크립트
    javascript
    react
    typescript
    프론트엔드
    HTML
    백준
    인공지능
    타입스크립트
    티스토리챌린지
    KUIT
    알고리즘
    프로그래머스 자바스크립트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
퀵차분
[KUIT] id와 class의 차이, css 우선순위, BEM
상단으로

티스토리툴바