웹프로그래밍/CSS 3

CSS - 선택자

Uisin 2024. 7. 29. 18:00

선택자 (Selector)


CSS3 선택자 (Selector)

- 선택자는 코드 내 요소를 선별하고 CSS 속성을 적용하는 데 사용되는 표현식으로 몇가지 기본 선택자들이 존재한다.

- 선택자는 전체선택자, 타입선택자, 클래스선택자, 아이디선택자, 속성선택자가 있고 가상 선택자가 존재한다

 

1. 전체선택자

- 전체 선택자는 말 그대로 스타일을 HTML 코드 전역으로 적용하고자 할 때 사용할 수 있는 선택자이다.

- 사용 방법은 간단하다. 코드 내부 *{속성 선언} 형태의 코드를 <style>에 적거나 외부에서 불러오면 된다.

<style>
    *{
        color: black;
        font-size: medium;
    }
</style>

 

2. 타입선택자

- 타입 선택자는 앞서 나왔던 인라인 스타일 시트와 유사한 방식으로 사용할 수 있다.
- 다만 <style> 태그 내에 적어야 한다는 점은 명심해야 한다. 

- 타입 선택자를 사용시 해당하는 HTML태그에 모두 같은 스타일을 적용시킨다

- 적용은 해당 태그의 이름을 적어서 적용한다

<style>
  h5 {
     color: aquamarine;
     font-family: 'Noto Sans KR', sans-serif;
     font-size: 20px;
  }
</style>  

<body>
  
    <h5>타입 선택자는 사용한 태그 이름을 그대로 사용</h5>
</body>

 

 

3.클래스선택자

- 클래스 선택자는 type 선택자와 다르게 태그들에 클래스 이름을 부여해 스타일을 적용시킬 수 있다.

- 만약 같은 클래스에 묶은 서로 다른 태그를 다른 스타일을 적용하고 싶다면 태그 + 클래스 이름 형태로 구분하여 스타일을 별도로 적용시킬 수 있다.

 - 적용은 해당 태그의 아이디에 . 을 붙여서 적용한다

<style>
.class1 {
         color: bisque;
        font-family: 'Noto Sans KR', sans-serif;
        }
        
h1.class1{
		 color: red;
         }
         
</style>

<body>

    <p class="class1">클래스 선택자는 id랑 뭐가 다른걸까...</p>
	<h1 class="class1">그러게 말이다</h1>
</body>

 

 

4. 아이디선택자

- id 선택자의 경우 클래스 선택자와 유사하지만 다른점이 있다면 여러개의 태그에 같은 선택자로 선택이 불가능하다는 점

- 즉 명시적으로 특정 태그에만 스타일을 적용해야 한다면 사용해야 한다

- 무엇보다 스타일 적용에 우선순위가 id 선택자의 순위가 더 높기 때문에 중요도가 높은 요소에 적용해야 한다

- 적용은 해당 태그의 아이디에 #을 붙여서 적용한다

<style>
#backpain{
          color: seagreen;
          font-family: 'Noto Sans KR', sans-serif;
        }

</style>

<body>
	<h1 id="backpain"> id 선택자는 이런식으로 선택자 이름을 정할 수 있다! </h1>
	<h2 id="backpain"> 이렇게 다른 태그에도 같은 이름으로 id선택자를 사용할 순 없다! </h2>
</body>

 

 

5.속성선택자

- 속성 선택자 같은 경우에는 조금 더 복잡할 수 있는데 간단히 보자면 특정 태그를 사용하고 있는 것 중에 내가 적용해야하는 특수한 속성을 찾아 선택해 스타일을 적용시킬 수 있는 선택자다.

- 예를 들어 <a> 태그 중 href 속성이 "google.com" 라면  a[href="google.com"] { color : blue}  이런식으로 적용한다

- 적용은 해당 태그 이름의 속성을 붙여서 적용한다

<style>
p[text]{
       color: red;
       }

p[text="attr2"]{
                color: yellow;
        	   }
</style>

<body>
    <p text="attr1">속성 선택자</p>
    <p text="attr2">속성 선택자</p>
</body>

 

 

6. 가상선택자

- 가상 선택자는 요소가 특정 상태에 있거나 특정 구조적 조건을 만족할 때 스타일을 적용할 수 있는 선택자다

- 문서가 로드되었을 때 바로 보이는 스타일이 아니라 특정 조건을 만족하면 적용된 스타일이 나타난다

- 예를 들어 마우스를 링크에 갖다 대거나, 해당 요소가 리스트의 3번째 <li>일 때 스타일이 적용되는 것이다

 

이벤트 가상 클래스 선택자

 - 사용자가 마우스 이벤트 행위를 어떻게 하는지에 따라 스타일이 다르게 적용된다

사용 방법 (a태그 기준) 설명
a : link {color : blue;} 웹 문서에서 사용자가 방문하지 않았던 곳을 표시
a : visited  {color : blue;} 링크를 이미 방문했다면 스타일 적용
a : active  {color : blue;} 링크를 클릭하는 순간 스타일 적용
a : hover  {color : blue;} 마우스 포인터를 갖다 대는 순간 스타일 적용
a : focus  {color : blue;} 해당 요소에 초점이 맞춰졌을 때 적용 (탭 키로 눌려보면 알 수 있다)

 

 

이벤트 가상 클래스 선택자

- 요소가 특정 구조적 조건을 만족하면 스타일이 적용이 된다

- 예를 들어 클래스 명이 container 안에 있는 2번 째 <ul>태그라면 .container > ul:nth-of-type(2){}가 되는 것이다

- first면 첫 번 째, last면 마지막이고 수열이라면 last가 붙으면 뒤에서 부터 선택한다는 의미다

사용 방법 (ul-li태그 기준) 설명
li:nth-child(2) |  li:nth-last-child(2) 부모 요소의 두 번째 자식인 li 요소 선택
li:nth-of-type(2) | li:nth-last-of-type(2) 부모 요소 내에서 두 번째 li 요소 선택
li:first-child | li:last-child 부모 요소 내에서 첫 번째 li 선택
li:first-of-type | li:last-of-type 부모 요소의 첫 번째 자식인 li 요소 선택
li:only-child 부모 요소 내에서 유일한 자식인 li 요소 선택
li:only-of-type 부모 요소 내에서 유일한 li 요소 선택

 

 

7. 조합 선택자

- 기존의 선택자들을 조합해서 특정 조건을 만족할 때 스타일을 적용시킨다

- 비교연산자나 +, ~와 같은 기호를 이용해 적용할 요소를 선택한다

- 자손이나 후손 등의 개념이 등장하는데 쉽게 생각해서 A안에 있는 B는 자손이자 후손, B안의 C는 A의 자손x 후손o

- 즉 A안에 있는 요소 모두가 후손이지만 직계 자손인 B만이 A의 자손인 것이다

 

구분 조합 방법 설명
후손 선택자 선택자 A 선택자 B 선택자 B가 선택자 A에 반드시 포함되있을 때 선택
자손 선택자 선택자 A > 선택자 B A의 직계 자식 B를 선택하여 스타일 적용
인접 형제 선택자 선택자 A + 선택자 B 형제 요소들 중 바로 다음에 인접한 형제 요소를 선택하여 스타일 적용
일반 형제 선택자 선택자 A ~ 선택자 B 형제 요소들 중 하나(B)를 선택하여 스타일 적용
그룹 선택자 선택자 A, 선택자 B A와 B 모두 선택하여 스타일 적용

 

예시 코드

<body>
  <div class="container">
    <h1>Heading</h1>
    <p>First paragraph (adjacent to h1).</p>
    <p>Second paragraph (general sibling).</p>
    <span>Example span</span>
  </div>
</body>

<style>
    /* 후손 선택자: .container 안의 모든 p */
    .container p {
      color: blue;
    }

    /* 자손 선택자: .container 바로 아래의 h1 */
    .container > h1 {
      font-size: 24px;
    }

    /* 인접 형제 선택자: h1 바로 다음에 오는 p */
    h1 + p {
      font-weight: bold;
    }

    /* 일반 형제 선택자: h1 이후의 모든 형제 p */
    h1 ~ p {
      background-color: lightgray;
    }

    /* 그룹 선택자: h1과 모든 span에 같은 스타일 적용 */
    h1, span {
      text-transform: uppercase;
    }
</style>

 

 

 

 

 

 

 

'웹프로그래밍 > CSS 3' 카테고리의 다른 글

CSS - Background와 Transition  (0) 2024.08.06
CSS - 레이아웃 속성과 flex  (0) 2024.08.05
CSS - 폰트 설정  (0) 2024.07.31
CSS - 박스 모델  (0) 2024.07.30
CSS - 기본 사용법  (0) 2024.07.26