crystal_dev
Crystal 개발 일지
crystal_dev
전체 방문자
오늘
어제
  • 분류 전체보기 (58)
    • Web (0)
    • Frontend (32)
      • React (0)
      • Javascript (17)
      • HTML & CSS (14)
      • DOM API (0)
    • 사이드프로젝트 (1)
      • Flask (1)
    • CS (0)
      • Network (0)
    • 형상관리 & 개발도구 (2)
      • git (1)
      • VSCode (1)
    • 알고리즘 (19)
      • 백준 알고리즘 (1)
      • 프로그래머스 (17)
      • 기타 (1)
    • Error (2)
      • javscript (1)
      • python (1)
    • blog (2)
      • daily (1)
      • 회고 (0)
      • it참고 (0)
      • 항해99 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 풀이
  • js 기본
  • 느슨한타입
  • frontend
  • Algorithm
  • match()
  • 프로그래머스
  • Programmers
  • 프론트엔드
  • js
  • Javascript
  • let
  • CSS
  • css정렬
  • 자바스크립트
  • js기본
  • 알고리즘
  • css위치
  • userfont
  • javascript error

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
crystal_dev
Frontend/HTML & CSS

[TIL] CSS Selector

[TIL] CSS Selector
Frontend/HTML & CSS

[TIL] CSS Selector

2022. 6. 9. 15:32
728x90
반응형

CSS Selector

클래스와 아이디는 같아 보이지만 차이점이 존재한다.
1. 같은 클래스 이름을 여러 요소가 가질 수 있지만, 같은 아이디를 여러 요소가 공유할 수는 없다.
2. 한 요소가 여러 클래스를 가질 수 있지만, 한 요소는 하나의 아이디만 가질 수 있다.
👉 즉, 한 요소는 클래스는 여러개 가질 수 있고, 아이디는 하나만 가질 수 있다.

 

1. 태그 셀렉터 (Type Selector)

지정된 태그명을 가지는 요소를 선택한다.

  • css
li {
}

 

 

2. class 셀렉터 (Class Selector)

 

class 속성 값을 지정하여 일치하는 요소를 선택한다. class 속성값은 중복이 가능하다. 

  • html
<p class="blue-text">Hello World!</p>

'.' 으로 해당 태그의 클래스의 이름으로 선택하는 것이 가능하다.

  • css
.blue-text {
  color: blue;
  font-size: 10px;
}

 

 

3. id 셀렉터(ID Selector) 

id 속성값을 지정하여 일치하는 요소를 선택한다. id 속성값은 class 셀렉터 처럼 중복될 수 없는 유일한 값이다.

  • html
<p id="my_text">Hello World!</p>

'#'으로 해당 태그의 아이디를 선택하는 것이 가능하다.

  • css
#my_text{
  color: blue;
  font-size: 10px;
}

 

4. 어트리뷰트 셀렉터 (Attribute Selector)

패턴 descripttion
셀렉터[속성="값] 지정된 속성을 가지며 지정된 값과 어트리뷰트의 값이 일치하는 요소를 선택한다.

예를 들어 type이 text인 input들만 선택하고 싶을 때 

  • html
<input type="text">

 

  • css
input[type=text] {
	padding: 10px;
    font-size: 20px;
    border: 1px solid black;
    border-radius: 5px;
}

 

복합 셀렉터

1. 후손 셀렉터 (Descendant Combinator)

패턴 descripttion
셀렉터A 셀렉터B 셀렉터 A의 모든 후손 요소 중 셀렉터 B와 일치하는 요소를 선택한다.

공백을 기준으로 셀렉터 A의 모든 후손 요소 중 셀렉터 B와 일치하는 모든 자손 요소를 선택하는 것이 가능하다. 

공백 다음에 tag 선택자, class 선택자, id선택자 등 자유롭게 사용이 가능하다.

<ul class="navbar">
  <li></li>
  <li></li>
  <li></li>
  <li></li>
</ul>
.navbar li {
  display : inline-block;
}

 

2. 자식 셀렉터 (Child Combinator)

패턴 descripttion
셀렉터A > 셀렉터B 셀렉터 A의 모든 후손 요소 중 셀렉터 B와 일치하는 요소를 선택한다.

직계 자손만 선택하는 것이 가능하다. 

<ul class="navbar">
  <li></li>
  <li></li>
  <li></li>
  <li></li>
</ul>
.navbar>li {
  display : inline-block;
}

 

구조 가상 클래스 셀렉터 (Structural pseudo-classes)

pseudo-classes descripttion
:nth-child(n) 셀렉터에 해당하는 모든 요소 중 앞에서 n번째 자식인 요소를 선택한다.
:nth-last-child(n) 셀렉터에 해당하는 모든 요소 중 뒤에서 n번째 자식인 요소를 선택한다.

여러 요소 중에 원하는 n번째 요소만 스타일을 주고 싶을 때 사용한다. 

 

  • html
<table>
    <thead>
        <th>ITEM</th>
        <th>AMOUNT</th>
        <th>PRICE</th>
        <th>TOTAL</th>
    </thead>
 </table>
  • css
table th:nth-child(2) {
	width: 400px;
    ...
}

table 태그 안에 있는 모든 th를 찾은 다음 2번째 나오는 th태그의 width를 400px로 설정한다. 

위와 같이 테이블에서 원하는 순서의 셀에 스타일을 줄 때 유용하게 사용할 수 있다.

 

 

다음과 같이 사용할 수도 있다.

(1) 짝수, 홀수로 등장하는 td에만 스타일 주기

  • CSS
table th:nth-child(even) {
  color: red;
}

even은 짝수로 등장하는 th에만 스타일을 줄 수 있다.

odd를 쓰면 홀수로 등장하는 th에만 스타일을 준다.

 

(2)  3의 배수로 등장하는 3,6,9,12... 번째 등장하는 요소

  • CSS
table th:nth-child(3n+0) {
	color:red;
}

3의 배수로 등장하는 3,6,9,12.. 번째 등장하는 요소에만 스타일을 줄 수 있다. 

3n+1 이렇게 작성하면 (3의배수 + 1) 번째 등장하는 요소에만 스타일을 준다.

 

 

 

1. 가상 클래스 셀렉터 (pesudo-class Selector)

상태에 따라서 스타일을 줄 수 있는 pesudo class 는 선택자에 추가하는 키워드이다.

선택한 요소가 특별한 상태여야 만족할 수 있다.

예를 들어 :hover를 사용하면 포인터를 버튼에 올렸을 때만 사용 가능 하다.

 

  • HTML
<button class="btn">결제하기</button>
  • CSS
/* 버튼에 마우스 커서를 올릴 때 */
.btn:hover {
    background-color: chocolate;
}

button에 마우스 커서를 올리면 색상이 chocolate 색상으로 변경된다.

이 외에도 button에 해당되는 가상클래스가 많이 존재한다.

 

.btn:hover{
  background: chocolate; /*마우스를 올려놓을 때*/
  }
  
.btn:focus{
  background: red; /*클릭 후 계속 포커스 상태일 때*/
  }
  
.btn:active{
  background: brown; /*클릭 중일 때*/
  }

 

hover, focus, active 스타일 넣을 때 순서는 꼭 이렇게 선언해야 잘 동작합니다.

1. hover

2. focus

3. active

 

이 외에도 다양한 가상클래스가 존재한다. 

:any-link/*방문 전, 방문 후 링크 한번에 선택할 때*/
:playing/*동영상, 음성이 재생중일 때*/
:paused/*동영상, 음성이 정지시*/
:autofill/*input의 자동채우기 스타일*/
:disabled/*disabled된 요소 스타일*/
:checked/*체크박스나 라디오버튼 체크되었을 때*/
:blank/*input이 비었을 때*/
:valid/*이메일 input 등에 이메일 형식이 맞을 경우*/
:invalid/*이메일 input 등에 이메일 형식이 맞지 않을 경우*/
:required/*필수로 입력해야할 input의 스타일*/
:nth-child(n) /*n번째 자식 선택*/
:first-child/*첫째 자식 선택*/
:last-child/*마지막 자식 선택*/

https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-classes

 

Pseudo-classes - CSS: Cascading Style Sheets | MDN

A CSS pseudo-class is a keyword added to a selector that specifies a special state of the selected element(s). For example, :hover can be used to change a button's color when the user's pointer hovers over it.

developer.mozilla.org

 

a태그,  input태그에도 자주 사용한다.

input:focus {
  border: 2px solid red; /* 커서가 input에 있을 때 */
}

a:link{ 
  color: red; /*방문 전 링크*/
}

a:visited{ 
  color: black; /*방문 후 링크*/
}

 

 

 

우선 순위

예를 들어 id, class, tag가 동일한 태그에 존재할 때

 

  • html
<p id="special" class="content">Front-end developer</p>
  • css
.content {
    color: red;
}

p {
    color: green;
}

#special {
    text-align: center;
    color: blue;
}

style 속성 중 color가 겹친다. 이렇게 스타일이 겹칠 경우 우선순위에 따라 글자 색상이 결정이 된다.

 

 

우선순위

id > class > tag

우선 순위만큼 점수를 매긴다면 id는 100점으로 제일 높고, class는 10점, tag는 2점으로 가장 낮은 우선순위를 가진다.

따라서 위의 p태그 글씨의 색상은 id의 색상이 적용이되어 파란색이 된다. 

 

 

 

 

 

 

 

 

728x90
반응형
저작자표시 (새창열림)

'Frontend > HTML & CSS' 카테고리의 다른 글

[TIL] div 디자인  (0) 2022.06.09
[TIL] margin, padding  (0) 2022.06.09
[TIL] 이미지 가운데 정렬  (0) 2022.06.09
[TIL] float로 수평 정렬  (0) 2022.05.12
[TIL] CSS 폰트와 구글 웹폰트  (0) 2022.05.12
  • CSS Selector
  •  
  • 1. 태그 셀렉터 (Type Selector)
  •  
  •  
  • 2. class 셀렉터 (Class Selector)
  •  
  •  
  • 3. id 셀렉터(ID Selector) 
  •  
  • 4. 어트리뷰트 셀렉터 (Attribute Selector)
  • 복합 셀렉터
  • 1. 후손 셀렉터 (Descendant Combinator)
  •  
  • 2. 자식 셀렉터 (Child Combinator)
  •  
  • 구조 가상 클래스 셀렉터 (Structural pseudo-classes)
  • 1. 가상 클래스 셀렉터 (pesudo-class Selector)
  •  
  • 우선 순위
'Frontend/HTML & CSS' 카테고리의 다른 글
  • [TIL] div 디자인
  • [TIL] margin, padding
  • [TIL] 이미지 가운데 정렬
  • [TIL] float로 수평 정렬
crystal_dev
crystal_dev
어제보다 더 나은 오늘의 내가 되자 ✧ʕ̢̣̣̣̣̩̩̩̩·͡˔·ོɁ̡̣̣̣̣̩̩̩̩✧

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.