CSS Cascading

wayandwayΒ·2024λ…„ 3μ›” 9일
1

HTML/CSS

λͺ©λ‘ 보기
7/7

🚩 CSS Cascading

CSSλŠ” Cascading Style Sheet의 μ•½μžμ΄λ‹€. 그럼 μ—¬κΈ°μ„œ Cascading의 μ˜λ―ΈλŠ” λ¬΄μ—‡μΌκΉŒ?

Cascade: μœ„μ—μ„œ μ•„λž˜λ‘œ λ–¨μ–΄μ§€λŠ”, μž‘μ€ 폭포 λΌλŠ” 단어와 같이, μΊμŠ€μΊμ΄λ”©μ€ CSS κ·œμΉ™μ„ 계단식 폭포처럼 μˆœμ„œμ— 따라 합쳐 μ μš©ν•˜λŠ” 것을 λ§ν•œλ‹€. λ”°λΌμ„œ μΊμŠ€μΊμ΄λ”©μ€ λ‹€μŒκ³Ό 같은 원칙에 따라 μš°μ„ μˆœμœ„λ₯Ό μ •ν•œλ‹€.

  1. μŠ€νƒ€μΌ μš°μ„ μˆœμœ„ (μ€‘μš”λ„, λͺ…μ‹œλ„, μ½”λ“œ μˆœμ„œ 순)
  2. μŠ€νƒ€μΌ 상속 (쑰상 νƒœκ·Έ -> μžμ† νƒœκ·Έ)


1. μŠ€νƒ€μΌ μš°μ„ μˆœμœ„

CSS μš”μ†Œλ“€μ€ 각각 μš°μ„ μˆœμœ„λ“€μ„ κ°–κ³  μžˆλŠ”λ°, 이 μš°μ„ μˆœμœ„κ°€ κ°€μž₯ 높은 μŠ€νƒ€μΌμ΄ CSS μš”μ†Œμ— μ μš©λœλ‹€. 이λ₯Ό μŠ€νƒ€μΌ μš°μ„ μˆœμœ„λΌκ³  ν•˜λ©° λ‹€μŒ 3가지 μš”μ†Œλ₯Ό 톡해 μš°μ„ μˆœμœ„λ₯Ό μ •ν•œλ‹€.

1-1. μ€‘μš”λ„ (μŠ€νƒ€μΌ μ‹œνŠΈμ˜ μ’…λ₯˜)

μ€‘μš”λ„λŠ” μŠ€νƒ€μΌμ„ μ„ μ–Έν•œ 주체(μž‘μ„±μž, μ‚¬μš©μž, λΈŒλΌμš°μ € κΈ°λ³Έ μŠ€νƒ€μΌ)에 따라 μš°μ„ μˆœμœ„λ₯Ό λ§€κΈ°λŠ” 것이닀.

1μˆœμœ„ - 인라인 μŠ€νƒ€μΌ : HTML μš”μ†Œμ˜ style 속성을 μ‚¬μš©ν•˜μ—¬ μŠ€νƒ€μΌμ„ μ§€μ •ν•˜λŠ” 것
2μˆœμœ„ - μ‚¬μš©μž 지정 μŠ€νƒ€μΌ(Author Stylesheet) : κ°œλ°œμžκ°€ μž‘μ„±ν•œ μ½”λ“œ
3μˆœμœ„ - λΈŒλΌμš°μ € κΈ°λ³Έ μ§€μ •μŠ€νƒ€μΌ(μ‚¬μš©μž 도ꡬ μŠ€νƒ€μΌ, User Agent Stylesheet)

1-2. μ„ νƒμžμ˜ λͺ…μ‹œλ„(Selector Specificity)

λͺ…μ‹œλ„λž€ μ„ νƒμžκ°€ κ°€λ¦¬ν‚€λŠ” 것이 더 λͺ…ν™•ν• μˆ˜λ‘ μš°μ„ μˆœμœ„λ₯Ό λ†’κ²Œ λ§€κΈ°λŠ” 것이닀. λ”°λΌμ„œ μ„ νƒμžλ§ˆλ‹€ λͺ…μ‹œλ„ 점수λ₯Ό 맀길 수 μžˆλ‹€. λͺ…μ‹œλ„ μ μˆ˜λŠ” 아이디 개수, 클래슀 개수, μš”μ†Œ 개수λ₯Ό μˆœμ„œλŒ€λ‘œ λ‚˜μ—΄ν•΄ 맀길 수 μžˆλ‹€.


예) h1#main의 μ μˆ˜λŠ” 1 0 1이고,h1.large.headline의 μ μˆ˜λŠ” 0 2 1μ΄λ―€λ‘œ, h1#main의 λͺ…μ‹œλ„ μ μˆ˜κ°€ 더 λ†’λ‹€.

1-3. μ½”λ“œ μˆœμ„œ

같은 μ„ νƒμžλ₯Ό 썼을 λ•Œ, μ½”λ“œ μˆœμ„œμƒ λ‚˜μ€‘μ— μ“΄ μ„ νƒμžμ˜ μš°μ„ μˆœμœ„κ°€ 더 λ†’λ‹€. 즉 μ½”λ“œμ—μ„œ μ•„λž˜ μͺ½μ— μ“΄ μ½”λ“œμΌμˆ˜λ‘ μš°μ„ μˆœμœ„κ°€ 더 λ†’λ‹€.


예λ₯Ό λ“€μ–΄ μ•„λž˜ μ½”λ“œμ—μ„œ, λ‚˜μ€‘μ— μ“΄ infoμ„ νƒμžμ˜ μš°μ„ μˆœμœ„κ°€ 더 λ†’κΈ° λ•Œλ¬Έμ— info클래슀의 κΈ€μžν¬κΈ°λŠ” 2em으둜 μ„€μ •λœλ‹€.

.info {
    font-size: 1em;
}
.info {
  font-size: 2em;
}



2. μŠ€νƒ€μΌ 상속

μŠ€νƒ€μΌ 상속은 νƒœκ·Έκ°€ 어디에 ν¬ν•¨λ˜μ—ˆλŠ”μ§€μ— 따라 μŠ€νƒ€μΌμ„ μ μš©ν•˜λŠ” κ·œμΉ™μ΄λ‹€. html λͺ¨λ“  νƒœκ·Έ μš”μ†Œλ“€μ€ DOM에 μ˜ν•΄ 트리 ꡬ쑰λ₯Ό κ°€μ§€λ―€λ‘œ 쑰상 νƒœκ·Έμ˜ CSSμŠ€νƒ€μΌμ΄ μžμ† νƒœκ·Έμ˜ CSS에도 μƒμ†λœλ‹€.

μƒμ†λœ μ†μ„±μ˜ μš°μ„ μˆœμœ„

쑰상 νƒœκ·Έλ“€μ—μ„œ 적용된 μŠ€νƒ€μΌμ΄ λͺ¨λ‘ κ³„μ‚°λœ ν›„ μš°μ„ μˆœμœ„λ₯Ό 따진닀. λΆ€λͺ¨ νƒœκ·Έλ₯Ό ν¬ν•¨ν•œ κ°€μž₯ κ°€κΉŒμš΄ μ‘°μƒμ—κ²Œ 물렀받은 μ†μ„±μΌμˆ˜λ‘ μš°μ„ μˆœμœ„κ°€ λ†’λ‹€.

μƒμ†λ˜λŠ” 속성듀

λŒ€ν‘œμ μœΌλ‘œ λ‹€μŒκ³Ό 같은 속성듀이 μƒμ†λœλ‹€.
color, font-family, font-size, font-weight, line-height, text-align, … .


μ–΄λ–€ 속성이 μƒμ†λ˜λŠ”μ§€ μ „λΆ€ μ™ΈμšΈ ν•„μš”λŠ” μ—†κ³ , μ–΄λ–€ 속성이 μƒμ†λ˜λŠ”μ§€ μ•Œκ³  μ‹Άλ‹€λ©΄ κ·Έλ•Œκ·Έλ•Œ κ²€μƒ‰ν•˜λ©΄ λœλ‹€. MDN μ‚¬μ΄νŠΈμ˜ CSS 속성 νŽ˜μ΄μ§€λ₯Ό 보면 μ•„λž˜ μŠ€ν¬λ¦°μƒ·μ²˜λŸΌ Formal definitionλΌλŠ” μ„Ήμ…˜μ΄ μžˆλ‹€. μ—¬κΈ°μ„œ Inheritedλ₯Ό λ³΄μ‹œλ©΄ 이 μ†μ„±μ˜ 상속 μ—¬λΆ€λ₯Ό μ•Œ 수 μžˆλ‹€. colorλŠ” μƒμ†λ˜λŠ” λŒ€ν‘œμ μΈ 속성인데, Formal definition에 보면 Inherited: yes라고 λ˜μ–΄μžˆλ‹€.




🚩 μš”μ•½

CSS Cascading

  • CSS κ·œμΉ™μ΄ μˆœμ„œμ— 따라 합쳐져 μš”μ†Œμ— μ μš©λ˜λŠ” κ·œμΉ™

μŠ€νƒ€μΌ μš°μ„ μˆœμœ„

  • CSS Casading이 μ μš©λ˜λŠ” μš°μ„ μˆœμœ„ κ·œμΉ™
  • μ€‘μš”λ„(인라인/μ‚¬μš©μž 지정/λΈŒλΌμš°μ € μŠ€νƒ€μΌ), λͺ…μ‹œλ„, μ½”λ“œ μˆœμ„œκ°€ 있음.

μŠ€νƒ€μΌ 상속

  • DOM νŠΈλ¦¬κ΅¬μ‘°μ— 따라 CSS κ·œμΉ™μ΄ 쑰상->μžμ† νƒœκ·Έλ‘œ μƒμ†λ˜λŠ” νŠΉμ„±
profile
web front-end / 간단 λͺ…λ£Œν•˜κ²Œ κΈ€μ“°κΈ°

0개의 λŒ“κΈ€

κ΄€λ ¨ μ±„μš© 정보