λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
πŸ‘‍πŸ—¨FRONT-END/🎨CSS

[λ‚ λ§ˆλ‹€ 3λΆ„ CSS] CSS μ„ νƒμž #κ°€μƒν΄λž˜μŠ€ μ„ νƒμž

by λ…Ήμ°¨λ§›κ°œκ΅¬λ¦¬ 2022. 10. 19.

μ‹œμž‘

가상(Pseudo) ν΄λž˜μŠ€λŠ” 클래슀, λ˜λŠ” νƒœκ·Έλͺ… μ„ νƒμž 뒀에 콜둠(:) 을 λΆ™μ—¬μ„œ ν‘œμ‹œν•˜λŠ” νŠΉλ³„ν•œ μš”μ†Œμ˜ μƒνƒœ, λ˜λŠ” μš”μ†Œμ˜ μˆœμ„œλ₯Ό κΈ°μ€€μœΌλ‘œ μžμ‹ μš”μ†Œλ₯Ό μ„ νƒν•˜λŠ” 방법을 κΈ°μˆ ν•œ 것이닀 λ˜ν•œ,  가상 클래슀 μ„ νƒμžλŠ” μ‹€μ œλ‘œ Html에 μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” ν΄λž˜μŠ€μ§€λ§Œ 마치 클래슀λ₯Ό 놓은것 처럼 μž‘λ™ν•œλ‹€κ³  ν•˜μ—¬ 가상 클래슀 μ„ νƒμžλΌκ³  λΆ€λ₯Έλ‹€.

 

자주 μ‚¬μš©ν•˜λŠ” 가상 클래슀 μ„ νƒμžμ˜ μ’…λ₯˜


:hover

마우슀의 ν¬μΈνŠΈκ°€ μ˜¬λΌκ°„ HTMLμš”μ†Œμ— λŒ€ν•œ μƒνƒœλ₯Ό μ •μ˜ν•œλ‹€.

 

p:hover, a:hover, .class:hover 과같이 μ„ νƒμž 뒀에 :hover을 λΆ™μ—¬ μ‚¬μš©ν•œλ‹€.

μ•„λž˜ μ˜ˆμ‹œμ—μ„œ aνƒœκ·Έ μš”μ†Œμ— 마우슀λ₯Ό 올리면 κΈ€μž 색깔이 λΉ¨κ°„μƒ‰μœΌλ‘œ λ°”λ€Œκ²Œ λœλ‹€.

πŸ’«μ˜ˆμ‹œ

a:hover {
  color: red;
}

 


:active

active κ°€μƒν΄λž˜μŠ€ μ•žμ— 쓰여진 HTML νƒœκ·Έλ₯Ό ν΄λ¦­ν•˜κ³  μžˆλŠ” λ™μ•ˆ μƒνƒœλ₯Ό μ •μ˜ν•œλ‹€.

 

ex)  a:active, button:active μ•„λž˜ μ˜ˆμ‹œμ—μ„œ a νƒœκ·Έ μš”μ†Œλ₯Ό λ§ˆμš°μŠ€κ°€ ν΄λ¦­ν•˜κ³  μžˆλŠ” λ™μ•ˆ κΈ€μžμƒ‰κΉ”μ΄ μ˜€λ Œμ§€μƒ‰μœΌλ‘œ λ°”λ€Œκ²Œ λœλ‹€.마우슀 클릭을 λ•Œλ©΄ λ‹€μ‹œ 처음 μƒνƒœλ‘œ λ³€ν•œλ‹€.

πŸ’«μ˜ˆμ‹œ

a:active {
  color: orange;
}

 


:focus

focus μš”μ†Œ μ•žμ— μ„ νƒλœ μš”μ†Œκ°€ 포컀슀된 μƒνƒœλ₯Ό μ •μ˜ν•œλ‹€.

input μš”μ†Œμ— μ‚¬μš©λœλ‹€.

 

μ•„λž˜ μ˜ˆμ‹œμ—μ„œ μ„ νƒλœ inputμš”μ†Œμ— λ§ˆμš°μŠ€ν΄λ¦­μ΄λ‚˜ νƒ­ν‚€λ₯Ό 톡해 ν™œμ„±ν™”κ°€ 되면 λ°°κ²½ 색상이 λΉ¨κ°„μƒ‰μ΄λœλ‹€.

πŸ’«μ˜ˆμ‹œ

input:focus {
	background-color: red;
}

 


:first-child  / :last-child

λΆ€λͺ¨ μš”μ†Œμ˜ 첫 번째 μžμ‹κ³Ό λ§ˆμ§€λ§‰ μš”μ†Œλ₯Ό μ„ νƒν•œλ‹€.

 

μ•„λž˜ μ˜ˆμ‹œμ—μ„œ .fruitsν΄λž˜μŠ€κ°€ λ¨Όμ € μ„ νƒλ˜κ³  κ·Έλ‹€μŒ μ„ νƒμžλ‘œ span:first-child μ΄λ―€λ‘œ

fruits의 μžμ‹μš”μ†ŒμΈ span쀑에 첫번재 μš”μ†Œλ₯Ό μ„ νƒν•œλ‹€.

κ·Έλž˜μ„œ λ”ΈκΈ°κ°€ μ ν˜€μžˆλŠ” span νƒœκ·Έ λΆ€λΆ„μ˜ μš”μ†Œκ°€ λΉ¨κ°„μƒ‰μœΌλ‘œ λ³€ν•˜κ²Œλœλ‹€.

 

λ§ˆμ°¬κ°€μ§€λ‘œ :last-child도 μ‚¬μš©ν•  수 μžˆλ‹€.
λ°‘μ˜ main.cssμ—μ„œ first-childλ₯Ό last-child둜 λ°”κΎΈλ©΄ 
.fruits μžμ†μΈ spanνƒœκ·Έμ€‘ λ§ˆμ§€λ§‰ μš”μ†ŒμΈ μˆ˜λ°•μ΄ μ„ νƒλ˜μ–΄ κΈ€μžμƒ‰μ΄ λΉ¨κ°„μƒ‰μœΌλ‘œ λ°”λ€Œκ²Œλœλ‹€

πŸ’«μ˜ˆμ‹œ

// index.html
<div class="fruits">
  <span>λ”ΈκΈ°</span> <!-- 선택 -->
  <span>μˆ˜λ°•</span>
  <div>μ˜€λ Œμ§€</div>
  <p>망고</p>
  <h3>사과</h3>
</div>
//main.css

.fruits span:first-child{
	color: red;
}

 


 

:nth-child(n)

μ„ νƒν•œ λΆ€λͺ¨ μš”μ†Œμ˜ μžμ‹ μš”μ†Œλ“€ 쀑 n번째 μ˜€λŠ” μžμ‹ μš”μ†Œλ“€μ„ μ„ νƒν•©λ‹ˆλ‹€.

μžμ‹ μš”μ†Œλ“€μ˜ λ‚˜μ˜€λŠ” μˆœμ„œλ₯Ό κΈ°μ€€μœΌλ‘œ 선택을 ν•˜λ©°, nμ—λŠ” κ°„λ‹¨ν•œ 연산식을 μ μš©ν•΄ μ„ νƒν•˜λŠ” μš”μ†Œλ₯Ό 필터링할 수 μžˆμŠ΅λ‹ˆλ‹€. n은 μ„œμˆ˜ κ°’μœΌλ‘œ 1μ—μ„œ μ‹œμž‘ν•©λ‹ˆλ‹€.

 

연산식을 μ‚¬μš©ν•  수 μžˆμœΌλ―€λ‘œ λ³€μˆ˜λ₯Ό μ‚¬μš©ν•  수 있으며, "2n+1"κ³Ό 같이 λ³€μˆ˜λ₯Ό μ‘°ν•©ν•΄ μˆ˜μ‹μ„ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λ•Œ μˆ˜μ‹μ— μ‚¬μš©ν•œ λ³€μˆ˜μ— λŒ€μž…ν•˜λŠ” 값은 0μ—μ„œ μ‹œμž‘ν•˜λŠ” μ •μˆ˜μž…λ‹ˆλ‹€.

μ΅œμ’…μ μœΌλ‘œ μ μš©λ˜λŠ” κ°’κ³Ό λ³€μˆ˜λ₯Ό μ‚¬μš©ν•  λ•Œ λ³€μˆ˜μ— μ μš©ν•˜λŠ” 값이 λ‹€λ₯Έ 점에 μ£Όμ˜ν•΄μ•Ό ν•©λ‹ˆλ‹€. μ΅œμ’… 값은 μ„œμˆ˜μ΄λ―€λ‘œ 1μ—μ„œ μ‹œμž‘ν•˜μ§€λ§Œ, μˆ˜μ‹μœΌλ‘œ λ³€μˆ˜λ₯Ό μ‚¬μš©ν•  경우 λ³€μˆ˜μ— λŒ€μž…λ˜λŠ” μ‹œμž‘ 값은 0μ—μ„œ λΆ€ν„°μž…λ‹ˆλ‹€.

μ•„λž˜ μ˜ˆμ‹œμ—μ„œ spanνƒœκ·Έμ˜ λ‘λ²ˆμ§Έ μš”μ†ŒμΈ μˆ˜λ°•μ˜ κΈ€μžκ°€ λΉ¨κ°„μƒ‰μœΌλ‘œ μ μš©λ©λ‹ˆλ‹€

πŸ’«μ˜ˆμ‹œ

// index.html
<div class="fruits">
  <span>λ”ΈκΈ°</span>
  <span>μˆ˜λ°•</span>  <!-- 선택 -->
  <div>μ˜€λ Œμ§€</div>
  <p>망고</p>
  <h3>사과</h3>
</div>
//main.css

.fruits span:nth-child(2){
	color: red;
}

μ•„λž˜μ½”λ“œμ²˜λŸΌ μ μš©ν•΄μ„œ μ‚¬μš©ν•  수 λ„μžˆλŠ”λ° .fruits 클래슀 μžμ‹ν΄λž˜μŠ€μ€‘ * λͺ¨λ“  ν΄λž˜μŠ€μ—μ„œ  n은 0λΆ€ν„° μ‹œμž‘ν•˜λ―€λ‘œ

1, 3, 5 번째인 λ”ΈκΈ°, μ˜€λ Œμ§€, 사과 μš”μ†Œμ˜ κΈ€μžκ°€ 빨간색이 λ©λ‹ˆλ‹€. 

// index.html
<div class="fruits">
  <span>λ”ΈκΈ°</span>	<!-- 선택 -->
  <span>μˆ˜λ°•</span>
  <div>μ˜€λ Œμ§€</div>	<!-- 선택 -->
  <p>망고</p>
  <h3>사과</h3>		<!-- 선택 -->
</div>
//main.css

.fruits *:nth-child(2n+1){
	color: red;
}

 


:not

νƒœκ·Έ, λ˜λŠ” 클래슀 이름을 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λΆ€λͺ¨ μš”μ†Œμ˜ μžμ‹ μš”μ†Œλ“€ 쀑 :not의 μ•žμ— μžˆλŠ” νƒœκ·Έκ°€ μ•„λ‹Œ νƒœκ·Έ, λ˜λŠ” ν΄λž˜μŠ€κ°€ μ•„λ‹Œ μš”μ†Œλ₯Ό λͺ¨λ‘ μ„ νƒν•©λ‹ˆλ‹€. ν•„μš” μ—†λŠ” μš”μ†Œ(λ“€)을 μ œμ™Έν•˜κ³  λ‚˜λ¨Έμ§€ λͺ¨λ“  μžμ‹ μš”μ†Œλ“€μ„ 선택해야 ν•  λ•Œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

μ•„λž˜μ˜ˆμ œλŠ”  .fruits 클래슀 μžμ‹ν΄λž˜μŠ€μ€‘ * λͺ¨λ“  ν΄λž˜μŠ€μ—μ„œ (span) νƒœκ·Έκ°€ μ•„λ‹Œ μš”μ†Œλ“€μ„ λͺ¨λ‘

μ„ νƒν•˜μ—¬ κΈ€μžμƒ‰μ„ λΉ¨κ°„μƒ‰μœΌλ‘œ μ μš©ν•©λ‹ˆλ‹€.

πŸ’«μ˜ˆμ‹œ

// index.html
<div class="fruits">
  <span>λ”ΈκΈ°</span>	
  <span>μˆ˜λ°•</span>
  <div>μ˜€λ Œμ§€</div>	<!-- 선택 -->
  <p>망고</p>			<!-- 선택 -->
  <h3>사과</h3>		<!-- 선택 -->
</div>
//main.css

.fruits *:not(span){
	color: red;
}

 

728x90