본문 바로가기
언어/CSS

[CSS] Selector(선택자) 정리

by 골절문간신배신 2024. 7. 30.

1. 기본 선택자

1-1. Universal Selector(전체 선택자)

 

HTML 내의 모든 요소에 *을 활용하여 동일한 스타일을 적용.

*{/* CSS 코드 */}
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>universal.html</title>
  <style>
      *{
          color:blueviolet;
          background-color: aqua;
      }
  </style>
</head>
<body>
  <h1>universal selector - 전체 선택자</h1>
  <p>모든 요소에 동일한 스타일을 적용</p>
  <div>
      <label>모든 요소를 선택함</label>
  </div>
</body>
</html>

 

 

1-2. Type Selector(태그 선택자 / 요소 선택자)

 

HTML의 특정 요소를 지정하여 스타일 적용 가능.

태그명{/* CSS 코드 */}
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>type.html</title>
  <style>
      h1{
          color: aqua;
      }
      p{
          color: brown;
      }
  </style>
</head>
<body>
  <h1>type selector - 요소 선택자</h1>
  <p>특정 요소에 스타일을 적용</p>
</body>
</html>

 

 

1-3. Class Selector(클래스 선택자)

 

특정 클래스를 통해 HTML 내의 요소를 지정하여 스타일 적용 가능.

class 이름 앞에 .을 붙여주어야 함!

.class속성값{/* CSS 코드 */}
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>class.html</title>
  <style>
      .choice{
          color: aquamarine;
          font-size: 1em; /* px : 픽셀, % : 배율, em : 해당 요소의 부모 요소 폰트크기에 배율을 넣음(해당 코드의 경우, h1, p의 부모가 body이니 body의 기본 폰트 크기에 배율을 가함)*/
      }
  </style>
</head>
<body>
  <h1 class="choice">class selector - 클래스 선택자</h1>
  <p>특정 클래스가 지정된 요소에 스타일을 적용</p>
  <p class="choice">특정 클래스가 지정된 요소에 스타일을 적용</p>
</body>
</html>

 

 

1-4. ID Selector(아이디 선택자)

 

특정 ID를 통해 HTML 내의 요소를 지정하여 스타일 적용 가능.(ID는 해당 문서 안에서 유일해야 함)

ID 이름 앞에 #을 붙여주어야 함.

#id속성값{/* CSS 코드 */}
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>id.html</title>
  <style>
      #only{
          font-weight: bold;
          color: aqua;
          background: yellow;
          text-decoration:underline;
      }
  </style>
</head>
<body>
  <h1>id selector - 아이디 선택자</h1>
  <p id="only">특정 아이디가 지정된 요소에 스타일을 적용시킬 수 있음</p> 
  <p>이 때 하나의 문서에는 중복된 아이디가 존재해서는 안됨</p>
</body>
</html>

 

 

1-5. Attribute Selector(속성 선택자)

 

요소의 속성 혹은 속성 값을 통해 HTML 내의 요소를 지정하여 스타일 적용 가능.

속성 앞뒤로 대괄호[ ] 를 붙여주어야 함.

[속성]{/* CSS 코드 */}
[속성=값]{/* CSS 코드 */}
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>attribute.html</title>
  <style>
      [title]{
          text-decoration:line-through;
          color: palevioletred;
      }
  </style>
</head>
<body>
  <h1>attribute selector - 속성 선택자</h1>
  <p title="속성 선택자에 대한 상세 설명">요소에 정의된 속성 명이나 속성 값으로 요소를 선택하여 스타일 적용
  </p>
</body>
</html>

 

+. 문자열 속성 선택자

특정한 문자열과 태그의 속성 값이 일치하는 요소 지정.

[속성~=문자열] /* 속성값에 해당 문자열이 포함되어 있으면 선택 (단어기준) */
[속성|=문자열] /* 속성값이 해당 문자열과 같거나 문자열-(하이픈)으로 시작하면 선택 */
[속성^=문자열] /* 속성값이 해당 문자열로 시작하면 선택 */
[속성$=문자열] /* 속성값이 해당 문자열로 끝나면 선택 */
[속성*=문자열] /* 속성값에 해당 문자열이 포함되면 선택 (전체값 기준) */

 

 

 


2. 조합 선택자

2-1. Descendant Selector(자손 선택자(결합자))

 

자손 선택자는 선행 선택자의 하위 요소 중에서 후행 선택자와 일치하는 모든 요소가 선택됨.

구분자 :   (공백)

선택자 : Type(요소), ID, Class, Attribute(속성) 사용 가능

선택자1 선택자2 선택자3 ...{/* CSS 코드 */}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>descendant.html</title>
<style>
  #main div{
      color: aqua;
      border: 3px solid currentColor;
  }
</style>
</head>
<body>
<h1>descendant selector - 자손 선택자(결합자)</h1>
<div id="main">
  <div>
      <p>
          자손 선택자는 선행 선택자의 하위 요소 중에서 후행 선택자와 일치하는 모든 요소가 선택됩니다.
      </p>
  </div>
  <p>
      자손 선택자는 선행 선택자의 하위 요소 중에서 후행 선택자와 일치하는 모든 요소가 선택됩니다.
  </p>
</div>
</body>
</html>

 

 

2-2. child combinator(자식 선택자)

 

선행 선택자의 자식 요소 중 후행 선택자와 일치하는 요소를 선택하여, 해당 요소와 하위 요소에 스타일 적용.

구분자 : >

선택자 : Type(요소), ID, Class, Attribute(속성) 사용 가능

부모선택자>자식선택자{/* CSS 코드*/}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>child.html</title>
<style>
  #main > div{
      border: 5px solid red;
  }
  ol > li{
      border: 5px solid blue;
  }
</style>
</head>
<body>
<h1>child combinator - 자식 선택자</h1>
<p>선행 선택자의 자식 요소 중 후행 선택자와 일치하는 요소를 선택하여, 해당 요소와 하위요소에 스타일 적용하는 방법입니다.</p>
<div id="main">
  <div>
      #main의 자식 요소
      <div>
          #main에 포함된 하위 요소
      </div>
  </div>
</div>
<hr/>
<ol>
  <li>첫 번째 목록
      <ul>
          <li>첫 번째 목록의 하위 목록</li>
      </ul>
  </li>
  <li>두 번째 목록
      <ul>
          <li>두 번째 목록의 하위 목록</li>
      </ul>
  </li>
  <li>세 번째 목록
      <ul>
          <li>세 번째 목록의 하위 목록</li>
      </ul>
  </li>
</ol>
</body>
</html>

 

 

2-3. Adjacent Sibling Selector (인접 형제 선택자)

 

선행 선택자와 같은 레벨의 요소 중 후행 선택자와 일치하는 첫 번째 요소를 선택하여 스타일 적용.

구분자 : +

선택자 : Type(요소), ID, Class, Attribute(속성) 사용 가능

이전선택자+대상선택자{/* CSS 코드*/}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>sibling.html</title>
<style>
  h1 + p{
      color:red;
  }
  h2 ~ p{
      color:blue;
  }
</style>
</head>
<body>
<h1>Adjacent Sibling Combinators - 인접 형제 선택자</h1>
<p>인접 형제 선택자는 선행 선택자와 후행 선택자를 "+"로 구분하여 선언한다.</p>
<p>인접 형제 선택자는 선행 선택자와 후행 선택자를 "+"로 구분하여 선언한다.</p>
<hr/>
<h2>General Sibling Combinators - 기본 형제 선택자</h2>
<p>기본 형제 선택자는 선행 선택자와 후행 선택자를 "~"로 구분하여 선언한다.</p>
<p>기본 형제 선택자는 선행 선택자와 후행 선택자를 "~"로 구분하여 선언한다.</p>
</body>
</html>

 

 

2-4. General Sibling Selector (일반 형제 선택자)

 

선행 선택자와 같은 레벨의 요소 중 후행 선택자와 일치하는 모든 요소를 선택하여 스타일 적용.

구분자 : ~ 

선택자 : Type(요소), ID, Class, Attribute(속성) 사용 가능

이전선택자~대상선택자{/* CSS 코드*/}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>sibling.html</title>
<style>
  h1 + p{
      color:red;
  }
  h2 ~ p{
      color:blue;
  }
</style>
</head>
<body>
<h1>Adjacent Sibling Combinators - 인접 형제 선택자</h1>
<p>인접 형제 선택자는 선행 선택자와 후행 선택자를 "+"로 구분하여 선언한다.</p>
<p>인접 형제 선택자는 선행 선택자와 후행 선택자를 "+"로 구분하여 선언한다.</p>
<hr/>
<h2>General Sibling Combinators - 기본 형제 선택자</h2>
<p>기본 형제 선택자는 선행 선택자와 후행 선택자를 "~"로 구분하여 선언한다.</p>
<p>기본 형제 선택자는 선행 선택자와 후행 선택자를 "~"로 구분하여 선언한다.</p>
</body>
</html>

 

 

2-5. Group Selector(그룹 선택자)

 

여러개의 선택자를 지정하여 동일한 스타일을 적용.

구분자 : ,

선택자 : Type(요소), ID, Class, Attribute(속성) 사용 가능

선택자1, 선택자2,… 선택자n{/* CSS 코드 */}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>group.html</title>
<style>
  p, [title], #exam, .grp{
      color:blue;
  }
</style>
</head>
<body>
<h1>선택자의 그룹화</h1>
<h1 title="선택자에 대한 글입니다.">선택자의 그룹화</h1>
<h2 id="exam">선택자의 그룹화의 예시입니다.</h2>
<p>모든 선택자는 쉼표를 사용하여 그룹으로 한 번에 선언할 수 있습니다.</p>
<p>모든 선택자는 쉼표를 사용하여 그룹으로 한 번에 선언할 수 있습니다.</p>
<p>모든 선택자는 쉼표를 사용하여 그룹으로 한 번에 선언할 수 있습니다.</p>
<p>모든 선택자는 쉼표를 사용하여 그룹으로 한 번에 선언할 수 있습니다.</p>
<div class="grp">모든 선택자는 쉼표를 사용하여 그룹으로 한 번에 선언할 수 있습니다.</div>
<div>모든 선택자는 쉼표를 사용하여 그룹으로 한 번에 선언할 수 있습니다.</div>
<div class="grp">모든 선택자는 쉼표를 사용하여 그룹으로 한 번에 선언할 수 있습니다.</div>
</body>
</html>

 

 

 


3. 가상 요소 선택자

3-1. Pseudo-Class Selector(가상 클래스 선택자)

HTML 내의 요소를 지정 후, 상황에 따라 스타일이 적용되도록 함.

요소 이름 뒤에 :을 붙이고, 속성을 적음.

기준요소:가상클래스선택자{/* CSS 코드*/}
<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <title>pseudo-class.html</title>
 <style>
     a:link{
         color:aquamarine;
         text-decoration: none;
     }
     a:visited{
         color: burlywood;
     }
     a:hover{
         color: blue;
     }
 </style>
</head>
<body>
 <h1>pseudo-class selector - 가상 클래스 선택자</h1>
 <a href="http://www.youtube.com">유튜브</a>
 <p>가상 클래스 선택자는 상황에 따라 요소를 선택하여 스타일을 지정할 수 있습니다.</p>
 <p>링크의 경우 방문 전, 방문 후, 링크 위에 마우스를 올려 놓거나 포커스를 가지고 있을 때 등의 상황을 선택하여 스타일을 지정할 수 있습니다.</p>
</body>
</html>

 

+. 가상 클래스 선택자 종류

 

1. 링크 가상 클래스 선택자

종류 설명
:link 링크를 한 번도 방문한 적 없는 상태
:visited 링크를 한 번 이상 방문한 적이 있는 상태

 

2. 동적 가상 클래스 선택자

종류 설명
:hover 마우스를 올린 상태
:active 마우스로 클릭한 상태


3. 입력 요소 가상 클래스 선택자

종류 설명
:focus 입력 요소에 커서가 활성화 된 상태
:checked 체크박스 요소에 체크한 상태
:disabled 상호작용 요소가 비활성화된 상태
:enabled 상호작용 요소가 활성화된 상태

 

4. 구조적 가상 클래스 선택자

종류 설명
:first-child 첫 번째 자식 태그
:last-child 마지막 자식 태그
:nth-child(n) n번째 자식 태그
:nth-last-child(n) 끝에서 n번째 자식 태그
:nth-of-type(n) n번째 특정 자식 태그
:nth-last-of-type(n) 끝에서 n번째 특정 자식 태그
:first-of-type 부모의 첫 번째 특정 자식 태그
:last-of-type 부모의 마지막 특정 자식 태그

 

 

3-2. Pseudo-Element Selector(가상 요소 선택자)

HTML 내의 요소를 지정 후, 영역에 따라 스타일이 적용되도록 함.

요소 이름 뒤에 ::을 붙이고, 속성을 적음.

기준선택자::가상요소선택자{/* CSS 코드 */}
<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <title>pseudo_element.html</title>
 <style>
     p::first-letter{
         font-size: 2em;
         color:blueviolet;
     }
     div::first-line{
         color:red;
     }
 </style>
</head>
<body>
 <h1>pseudo-element selector - 가상 요소 선택자</h1>
 <p>가상 요소 선택자는 첫 줄, 첫 글자, 특정 요소 앞이나 뒤 등의 요소에서 가상 영역을 선택하여 스타일을 지정할 수 있습니다.</p>
 <div>가상 요소 선택자는 첫 줄, 첫 글자, 특정 요소 앞이나 뒤 등의 요소에서 가상 영역을 선택하여 스타일을 지정할 수 있습니다.</div>
</body>
</html>

'언어 > CSS' 카테고리의 다른 글

[CSS] grid(display 속성 값)  (0) 2024.07.30
[CSS] flex(display 속성 값)  (0) 2024.07.30
[CSS] Media Query(미디어 쿼리)  (0) 2024.07.30
[CSS] HTML에 CSS style sheet를 적용하는 방법  (0) 2024.07.30
[CSS] display 속성(Property) 정리  (0) 2024.07.29

댓글