CSSCSS 기초강의 10개 중 2번째난이도 입문

원하는 요소를 골라내는 기술 — CSS 선택자

발행 읽는 시간 약 3 분

  • CSS
  • 선택자
  • class
  • id
  • hover
  • 가상클래스

강의 소개

태그·클래스·아이디 선택자부터 자손·형제·가상 클래스 선택자까지, 원하는 HTML 요소에 정확히 스타일을 적용하는 방법을 배웁니다.

"이 특정 문단만 빨갛게 만들고 싶어"#

CSS를 처음 배우면 이런 상황이 생깁니다.

HTML
<p>이 문단은 검은색</p>
<p>이 문단은 빨간색으로 만들고 싶어!</p>
<p>이것도 검은색</p>

세 개의 <p> 가 있는데 가운데 것만 빨갛게 하려면 어떻게 해야 할까요? p { color: red; } 라고 쓰면 모두 빨개집니다.

이 문제를 해결하는 것이 선택자(Selector) 입니다.


1. 태그 선택자#

태그 이름을 그대로 씁니다. 해당 태그 전부에 스타일이 적용됩니다.

CSS
h1 { color: navy; }
p { font-size: 16px; }
a { color: orange; }

2. 클래스 선택자 — .클래스명#

HTML 요소에 class 속성을 주고, CSS에서 .클래스명으로 선택합니다.

HTML:

HTML
<p class="highlight">이 문단만 강조됩니다.</p>
<p>이 문단은 기본 스타일</p>
<p class="highlight">이것도 강조됩니다.</p>

CSS:

CSS
.highlight {
  color: red;
  font-weight: bold;
}

클래스는 여러 요소에 같은 이름을 사용할 수 있습니다. 하나의 요소에 여러 클래스를 줄 수도 있습니다.

HTML
<p class="big bold red">크고 굵고 빨간 텍스트</p>
CSS
.big { font-size: 24px; }
.bold { font-weight: bold; }
.red { color: red; }

3. 아이디 선택자 — #아이디명#

HTML 요소에 id 속성을 주고, CSS에서 #아이디명으로 선택합니다.

HTML:

HTML
<h2 id="main-title">메인 제목</h2>

CSS:

CSS
#main-title {
  color: purple;
  text-decoration: underline;
}

아이디는 페이지에서 딱 하나만 써야 합니다. 유일한 요소를 선택할 때 씁니다.

클래스 vs 아이디 — 언제 어떤 걸 쓰나?#

클래스 (.)아이디 (#)
중복 사용여러 요소에 같은 이름 가능페이지에 하나만
용도스타일 재사용고유한 요소 지정
우선순위낮음높음

실무에서는 클래스를 훨씬 많이 씁니다. 아이디는 JavaScript에서 특정 요소를 찾거나 앵커 링크에 사용하는 경우가 많습니다.


4. 자손 선택자 — 공백으로 연결#

특정 요소 안에 있는 요소를 선택합니다.

CSS
/* nav 안에 있는 a 태그만 */
nav a {
  color: white;
  text-decoration: none;
}

/* .card 안에 있는 p 태그만 */
.card p {
  font-size: 14px;
  color: gray;
}

5. 가상 클래스 선택자 — :#

특정 상태나 위치에 있는 요소를 선택합니다.

:hover — 마우스를 올렸을 때#

CSS
button:hover {
  background-color: darkblue;
  color: white;
}

a:hover {
  text-decoration: underline;
}

링크나 버튼 위에 마우스를 올리면 스타일이 바뀝니다. 이 하나만으로도 인터랙티브한 느낌을 줄 수 있어요!

:first-child / :last-child — 첫 번째 / 마지막 자식#

CSS
/* ul의 첫 번째 li */
li:first-child {
  font-weight: bold;
}

/* ul의 마지막 li */
li:last-child {
  color: gray;
}

:nth-child(n) — n번째 자식#

CSS
/* 짝수 번째 행에 배경색 (표에서 유용) */
tr:nth-child(even) {
  background-color: #f9f9f9;
}

/* 홀수 번째 */
tr:nth-child(odd) {
  background-color: white;
}

/* 3번째 */
li:nth-child(3) {
  color: red;
}

:focus — 입력 상자에 커서가 있을 때#

CSS
input:focus {
  border-color: blue;
  outline: 2px solid lightblue;
}

6. 전체 선택자 — *#

페이지의 모든 요소에 적용됩니다.

CSS
* {
  box-sizing: border-box;  /* 나중에 배울 중요한 설정 */
  margin: 0;
  padding: 0;
}

선택자 우선순위 (Specificity)#

같은 요소에 여러 스타일이 충돌할 때 어떤 게 적용될까요?

HTML
<p id="intro" class="highlight">어떤 색이 될까요?</p>
CSS
p { color: black; }          /* 태그: 가장 낮음 */
.highlight { color: blue; }  /* 클래스: 중간 */
#intro { color: red; }       /* 아이디: 높음 */

결과: 빨강 — 아이디 선택자가 가장 우선순위가 높습니다.

우선순위 순서:

Text
인라인 style="" > #아이디 > .클래스 > 태그

직접 해보기 ✏️#

아래 HTML에 CSS를 추가해 각 조건을 만족하세요.

HTML
<ul>
  <li class="important">첫 번째 항목 (빨간색)</li>
  <li>두 번째 항목</li>
  <li>세 번째 항목</li>
  <li class="important">네 번째 항목 (빨간색)</li>
  <li>다섯 번째 항목</li>
</ul>

<button>버튼</button>

목표:

  1. important 클래스가 붙은 항목은 빨간색으로
  2. 세 번째 항목(nth-child)은 파란색으로
  3. 버튼에 마우스를 올리면 배경이 회색으로 바뀌도록

정리#

선택자문법용도
태그h1, p모든 해당 태그
클래스.이름같은 스타일 여러 요소에
아이디#이름페이지에 하나뿐인 요소
자손nav a특정 요소 안의 자손
hover:hover마우스 오버 상태
nth-child:nth-child(n)n번째 자식

다음 편에서는 색상과 배경을 자유자재로 다루는 방법을 배웁니다.

Follow · Ask · Work

이 글이 도움이 됐다면

짧은 작업 기록과 데모는 인스타그램에 올립니다. 만들고 싶은 것이 있다면 프로젝트 의뢰나 협업 제안도 편하게 보내 주세요.

글쓴이

파란여우

직접 만든 AI 앱·제품의 개발·배포를 공개하는 실전형 테크 크리에이터

파란여우 소개 Instagram @bluefox._.hi

이어서 보기

만들고 싶은 것이 있다면 프로젝트 의뢰로 알려 주세요.