CSS 선택자 정리

1. 기본 선택자

1.1. 전체 선택자 (*)

  • HTML 문서의 모든 요소를 선택합니다.
* {
  margin: 0;
  padding: 0;
}

1.2. 태그 선택자

  • 특정 태그 이름을 가진 요소를 선택합니다.
p {
  color: blue;
}

1.3. 클래스 선택자 (.)

  • 특정 클래스 이름을 가진 요소를 선택합니다.
.intro {
  font-size: 16px;
}

1.4. 아이디 선택자 (#)

  • 특정 아이디를 가진 요소를 선택합니다. ID는 문서에서 고유해야 합니다.
#header {
  background-color: gray;
}

2. 결합 선택자

2.1. 후손 선택자 (공백)

  • 특정 요소의 모든 후손 요소를 선택합니다.
div p {
  color: red; /* div 내부의 모든 p 요소 */
}

2.2. 자식 선택자 (>)

  • 특정 요소의 직계 자식 요소만 선택합니다.
ul > li {
  list-style: none;
}

2.3. 형제 선택자

  • 인접 형제 선택자 (+): 특정 요소 바로 다음에 오는 형제를 선택합니다.
h1 + p {
  font-size: 14px;
}
  • 일반 형제 선택자 (~): 특정 요소 뒤에 오는 모든 형제를 선택합니다.
h1 ~ p {
  color: green;
}

3. 그룹 선택자 (,)

  • 여러 선택자를 그룹화하여 동일한 스타일을 적용합니다.
h1, h2, h3 {
  font-weight: bold;
}

4. 속성 선택자

4.1. 기본 속성 선택자 ([attr])

  • 특정 속성이 있는 요소를 선택합니다.
[input] {
  border: 1px solid black;
}

4.2. 속성 값 선택자

  • 특정 속성값이 있는 요소를 선택합니다.
[input="text"] {
  background-color: yellow;
}

4.3. 부분 일치 속성 선택자

  • 시작 값 (^=): 특정 값으로 시작하는 속성을 선택합니다.
a[href^="https"] {
  color: blue;
}
  • 끝 값 ($=): 특정 값으로 끝나는 속성을 선택합니다.
img[src$=".jpg"] {
  border-radius: 5px;
}
  • 포함 값 (*=): 특정 값을 포함하는 속성을 선택합니다.
a[href*="example"] {
  text-decoration: underline;
}

5. 의사 클래스

5.1. 동적 상태 의사 클래스

  • :hover: 요소에 마우스를 올렸을 때.
  • :focus: 요소가 포커스를 받았을 때.
  • :active: 요소가 활성 상태일 때.
button:hover {
  background-color: lightblue;
}

5.2. 구조 의사 클래스

  • :first-child: 부모의 첫 번째 자식.
  • :last-child: 부모의 마지막 자식.
  • :nth-child(n): 부모의 n번째 자식.
li:first-child {
  font-weight: bold;
}

li:nth-child(2) {
  color: red;
}

6. 의사 요소

  • 특정 요소의 일부를 선택합니다.
    • ::before: 요소 내용 앞에 가상 콘텐츠를 추가.
    • ::after: 요소 내용 뒤에 가상 콘텐츠를 추가.
    • ::first-line: 첫 번째 줄.
    • ::first-letter: 첫 번째 글자.
p::before {
  content: "★ ";
  color: gold;
}

7. CSS 우선순위

선택자의 특이성(specificity)에 따라 적용되는 우선순위가 결정됩니다.

  • 인라인 스타일 (style="...") > ID 선택자 > 클래스 선택자 > 태그 선택자 > 전체 선택자.

예제: 우선순위 비교

<p id="main" class="highlight">Hello</p>
p { color: black; }          /* 1 */ 
.highlight { color: blue; }  /* 10 */ 
#main { color: red; }        /* 100 */

결과: red (ID 선택자의 우선순위가 가장 높음)

Categories:

Updated:

Leave a comment