CSS 선택자와 상속
아래 내용은 학원 수업 및 온라인 강좌 등을 듣고 정리한 내용입니다.
CSS selector
CSS selector(이하 선택자)는 HTML 파일에서 작성한 엘리먼트들을 선택하는 것을 말한다.
이 선택자는 태그명, 아이디, 클래스 등으로 선택할 수 있다.
기본 선택자
*
: (전체 선택자) 내부의 모든 요소를 선택태그명
: (태그 선택자) 태그 이름을 선택자로 선택#아이디이름
: (아이디 선택자) 아이디 이름을 선택자로 선택.클래스이름
: (클래스 선택자) 클래스 이름을 선택자로 선택
복합 선택자
- 일치 선택자 :
선택자1선택자2
를 복합적으로 선택 (두 가지가 동시에 만족되어야 하며, 선택자가 붙어 있음) - 자식 선택자 :
선택자1 > 선택자2
선택자1의 자식 선택자를 찾아서 선택 - 후손(하위) 선택자 :
선택자1 선택자2
선택자1 속에 있는 모든 요소 중에서 선택자2를 찾아서 선택 - 인접 형제 요소 선택자 :
선택자1 + 선택자2
선택자1 다음에 나오는 형제 요소 1개 - 일반 형제 요소 선택자 :
선택자1 ~ 선택자2
선택자1 다음에 나오는 형제 요소 모두
인접 형제 요소 선택자와 일반 형제 요소 선택자는 선택자1의 앞쪽의 형제는 찾지 않는다.
<div> // 1
<ul> // 2
<li></li> // 3
<li class="orange"></li> // 4
<li></li> // 5
<li></li> // 6
</ul>
</div>
li.orange {}
:li
와.orange
가 동시에 일치되어야 선택됨 (일치 선택자) → 4ul > li {}
:ul
의 자식인li
를 전부 선택됨 (자식 선택자) → 3, 4, 5, 6div .orange {}
:div
속에 있는 모든 선택자 중에서.orange
가 선택됨 (후손(하위) 선택자) → 4.orange + li {}
:.orange
다음에 오는 형제li
1개가 선택됨 (인접 형제요소 선택자) → 5.orange ~ li {}
:.orange
다음에 오는 형제li
가 모두 선택됨 (일반 형제요소 선택자) → 5, 6
가상 클래스 선택자
:hover
: 마우스가 올라가 있는 동안active
: 마우스를 클릭하고 있는 동안focus
: 포커스가 된 동안대화형 콘텐츠에서 사용이 가능함first-child
: 형제 요소 중 첫 번째last-child
: 형제 요소 중 마지막nth-child(n)
: 형제 요소 중 n번째 요소 선택 (n키워드 사용 시 0부터 해석)
XXX-child 주의사항
.fruits p:nth-child(n)
위 예시의 경우 아래와 같은 순서로 해석해서 선택한다.
.fruits
:nth-child(n)
p
E:nth-of-type(n)
:E
와 동일한 타입 형제 요소 중E
가n
번째 이면 선택한다.
부정 선택자
E:not(s)
: E
중에서 S
가 아닌 것 선택
가상 요소 선택
:
≠::
E::before
:E
요소 내부의 앞에 내용 (content) 삽입E::after
:E
요소 내부의 뒤에 내용 (content) 삽입
속성 선택자 (Attribute Selectors)
html
의 속성을 선택 (css의 속성은 property라고 한다.)
[attr]
: attr 속성인 값이 있으면 선택[attr = value]
: attr 속성 값이 value인 요소 선택[attr* = value]
: attr 속성 값에 value가 포함되어 있는 요소 선택 여러 개의 class명이 포함되어 있어도 사용 가능[attr^ = value]
: attr 속성 값이 value로 시작하는 요소 선택[attr$ = value]
: attr 속성 값이 value로 끝나는 요소 선택
상속
조상 요소의 속성을 지정 → 후손에도 적용됨 (대부분 글자를 다루는 속성!)
font-size
font-weight
font-style
line-height
font-family
color
text-align
text-indent
text-decoration
letter-spacing
opacity
etc
강제 상속
속성의 "값"에 inherit
를 적용하면 "부모"에서 "자식"으로 강제 상속시킬 수 있다. 후손에는 적용 안됨, 모든 요소가 inherit
를 사용할 수 있는 것은 아니다.
우선순위
같은 요소가 여러 선언 대상이 된 경우
- 명시도 점수가 높은 것
- 명시도 점수가 같을 경우에는 늦게 작성된 선언이 우선 됨
- 명시도는 "상속" 규칙보다 우선 됨
!important
는 다른 모든 대상보다 우선 됨
명시도 점수 계산
- !important : ∞ pt
- inline 선언 : 1,000pt
- id 선택자 : 100pt
- class 선택자 : 10pt
- 태그 선택 : 1pt
- 전체 선택 : 0pt
- 상속은 계산하지 않는다.
- 부정 선택자는 점수 없음
'DEV-LOG > HTML & CSS' 카테고리의 다른 글
CSS background, img, font (0) | 2023.06.08 |
---|---|
CSS Box Model (0) | 2023.06.08 |
CSS 문법과 선언방식, 단위 (0) | 2023.06.08 |
HTML Tags (Element)2 (0) | 2023.06.08 |
HTML Tags (Element)1 (0) | 2023.06.07 |