🍎 듀어가기에 μ•žμ„œ

이 글은 λͺ¨λ˜ 웹을 μœ„ν•œ HTML5+CSS3 바이블을 κ³΅λΆ€ν•˜λ©° κΈ°μ–΅ν•΄λ‘˜ λ‚΄μš©λ“€μ„ κ°„λ‹¨ν•˜κ²Œ κΈ°λ‘ν•œ κΈ€μž…λ‹ˆλ‹€. 책에 λŒ€ν•œ μžμ„Έν•œ 사항은 링크λ₯Ό μ°Έκ³ ν•΄μ£Όμ„Έμš”. πŸ‘

πŸ“– 1. CSS3 μ„ νƒμž κΈ°λ³Έ

CSS μ„ νƒμžλž€

CSS3 μ„ νƒμžλŠ” νŠΉμ •ν•œ HTML νƒœκ·Έλ₯Ό 선택할 λ•Œ μ‚¬μš©ν•˜λŠ” κΈ°λŠ₯으둜 ν•΄λ‹Ή νƒœκ·Έμ— μš°λ¦¬κ°€ μ›ν•˜λŠ” μŠ€νƒ€μΌ λ˜λŠ” 효과λ₯Ό μ μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

h1 {
  color: red;
}
/* h1: μ„ νƒμž, color: μŠ€νƒ€μΌ 속성, red: μŠ€νƒ€μΌ κ°’ 
"h1 νƒœκ·Έμ˜ color 속성에 red ν‚€μ›Œλ“œλ₯Ό μ μš©ν•©λ‹ˆλ‹€." */

전체 μ„ νƒμž

HTML λ¬Έμ„œ μ•ˆμ— μžˆλŠ” λͺ¨λ“  νƒœκ·Έλ₯Ό 선택할 λ•Œ, 전체 μ„ νƒμžλ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.
전체 μ„ νƒμžλ₯Ό μ‚¬μš©ν•˜λ©΄ html νƒœκ·ΈλΆ€ν„° head, title, style, body νƒœκ·ΈκΉŒμ§€ λͺ¨λ‘ μ„ νƒν•©λ‹ˆλ‹€.
body νƒœκ·Έ λ‚΄λΆ€μ˜ νƒœκ·Έλ“€λ§Œ μ„ νƒν•˜λŠ” 게 μ•„λ‹™λ‹ˆλ‹€!

* {
  color: yellow;
}

속성 μ„ νƒμž

νŠΉμ • 속성을 가진 HTML νƒœκ·Έλ₯Ό 선택할 수 μžˆμŠ΅λ‹ˆλ‹€.

κΈ°λ³Έ 속성 μ„ νƒμž
input[type='text'] {
  background: blue;
}
λ¬Έμžμ—΄ 속성 μ„ νƒμž
  • ^=의 경우 속성값이 뒀에 μ˜€λŠ” κ°’μœΌλ‘œ μ‹œμž‘λ˜λŠ” νƒœκ·Έλ₯Ό μ„ νƒν•©λ‹ˆλ‹€.
  • $=의 경우 속성값이 뒀에 μ˜€λŠ” κ°’μœΌλ‘œ λλ‚˜λŠ” νƒœκ·Έλ₯Ό μ„ νƒν•©λ‹ˆλ‹€.
div[class^='main'] {
  color: green;
}

img[src$='jpg'] {
  border: 2px solid gold;
}

후손 μ„ νƒμž & μžμ† μ„ νƒμž

μ•„λž˜μ˜ μ½”λ“œμ—μ„œ div νƒœκ·Έλ₯Ό κΈ°μ€€μœΌλ‘œ λ°”λ‘œ ν•œ 단계 μ•„λž˜μ— μœ„μΉ˜ν•œ νƒœκ·Έ(h1, h2, ul)λ₯Ό μžμ†μ΄λΌκ³  λΆ€λ₯΄κ³  μžμ† νƒœκ·Έλ₯Ό 포함 λͺ¨λ“  div의 μ•„λž˜ νƒœκ·Έλ“€μ„ 후손이라고 λΆ€λ¦…λ‹ˆλ‹€.

<div>
  <h1>CSS3 Selector Basic</h1>
  <h2>Lorem ipsum</h2>
  <ul>
    <li>universal selector</li>
    <li>type selector</li>
    <li>id & class selector</li>
  </ul>
</div>
div h1 {
  background: black;
}
/* div νƒœκ·Έμ˜ 후손 νƒœκ·Έλ“€ 쀑 h1 νƒœκ·Έλ“€μ΄ λͺ¨λ‘ μ„ νƒλ©λ‹ˆλ‹€. */

div > h2 {
  background: skyblue;
}
/* div νƒœκ·Έμ˜ μžμ† νƒœκ·Έλ“€(λ°”λ‘œ μ•„λž˜) 쀑 h2 νƒœκ·Έλ“€μ΄ λͺ¨λ‘ μ„ νƒλ©λ‹ˆλ‹€. */

λ™μœ„ μ„ νƒμž

λ™μΌν•œ μœ„μΉ˜(μΈ΅)에 μœ„μΉ˜ν•œ νƒœκ·Έλ₯Ό 선택할 λ•Œ μ‚¬μš©ν•˜λŠ” μ„ νƒμžμž…λ‹ˆλ‹€.
CSS3 μ• λ‹ˆλ©”μ΄μ…˜μ„ μ‚¬μš©ν•΄ λ™μ μœΌλ‘œ μ›€μ§μ΄λŠ” λ ˆμ΄μ•„μ›ƒμ„ ꡬ성할 λ•Œ λ™μœ„ μ„ νƒμžλ₯Ό 자주 μ‚¬μš©ν•©λ‹ˆλ‹€.

<h1>hi</h1>
<h2>bye</h2>
<h2>good</h2>
h1 + h2 {
  color: red;
}
/* h1 νƒœκ·Έ `λ°”λ‘œ λ’€`에 μœ„μΉ˜ν•˜λŠ” h2 νƒœκ·Έλ₯Ό μ„ νƒν•©λ‹ˆλ‹€.
(이 λ•Œ, h1κ³Ό h2λŠ” `λ™μœ„ 관계`μž…λ‹ˆλ‹€.) */

h1 ~ h2 {
  color: pink;
}
/* h1 νƒœκ·Έ `λ’€`에 μœ„μΉ˜ν•˜λŠ” λͺ¨λ“  h2 νƒœκ·Έλ₯Ό μ„ νƒν•©λ‹ˆλ‹€.
(이 λ•Œ, h1κ³Ό h2λŠ” `λ™μœ„ 관계`μž…λ‹ˆλ‹€.) */

λ°˜μ‘ μ„ νƒμž

μœ μ €μ˜ λ°˜μ‘μœΌλ‘œ μƒμ„±λ˜λŠ” νŠΉμ • μƒνƒœλ₯Ό μ„ νƒν•˜λŠ” μ„ νƒμžμž…λ‹ˆλ‹€.

h1:hover {
  color: red;
}
/* h1 νƒœκ·Έμ— 마우슀λ₯Ό 올릴 κ²½μš°μ— μ μš©λ©λ‹ˆλ‹€.(개인적으둜 μ’‹μ•„ν•˜λŠ” νƒœκ·Έμž…λ‹ˆλ‹€. πŸ‘) */

h1:active {
  color: blue;
}
/* h1 νƒœκ·Έλ₯Ό 마우슀둜 클릭할 λ•Œ μ μš©λ©λ‹ˆλ‹€. */

ꡬ쑰 μ„ νƒμž

μžμ† μ„ νƒμžμ™€ λ³‘ν–‰ν•΄μ„œ 자주 μ‚¬μš©ν•©λ‹ˆλ‹€.

일반 ꡬ쑰 μ„ νƒμž

νŠΉμ •ν•œ μœ„μΉ˜μ— μžˆλŠ” νƒœκ·Έλ₯Ό μ„ νƒν•˜λŠ” μ„ νƒμžμž…λ‹ˆλ‹€.

  • :first-child : ν˜•μ œ 관계 쀑 첫 λ²ˆμ§Έμ— μœ„μΉ˜ν•˜λŠ” νƒœκ·Έλ₯Ό μ„ νƒν•©λ‹ˆλ‹€.
  • :last-child : ν˜•μ œ 관계 쀑 맨 끝에 μœ„μΉ˜ν•˜λŠ” νƒœκ·Έλ₯Ό μ„ νƒν•©λ‹ˆλ‹€.
  • :nth-child(μˆ˜μ—΄) : ν˜•μ œ 관계 쀑 μ•žμ—μ„œ μˆ˜μ—΄ λ²ˆμ§Έμ— μœ„μΉ˜ν•˜λŠ” νƒœκ·Έλ₯Ό μ„ νƒν•©λ‹ˆλ‹€.
  • :nth-last-child(μˆ˜μ—΄) : ν˜•μ œ 관계 쀑 λ’€μ—μ„œ μˆ˜μ—΄ λ²ˆμ§Έμ— μœ„μΉ˜ν•˜λŠ” νƒœκ·Έλ₯Ό μ„ νƒν•©λ‹ˆλ‹€.
ν˜•νƒœ ꡬ쑰 μ„ νƒμž

일반 ꡬ쑰 μ„ νƒμžμ™€ ν—·κ°ˆλ¦¬μ§€λ§Œ νƒœκ·Έ ν˜•νƒœλ₯Ό κ΅¬λΆ„ν•œλ‹€λŠ” νŠΉμ§•μ΄ μžˆμŠ΅λ‹ˆλ‹€.

  • :first-of-type : ν˜•μ œ 관계 쀑 첫 번째둜 λ“±μž₯ν•˜λŠ” νŠΉμ • νƒœκ·Έλ₯Ό μ„ νƒν•©λ‹ˆλ‹€.
  • :last-of-type : ν˜•μ œ 관계 쀑 맨 끝에 λ“±μž₯ν•˜λŠ” νŠΉμ • νƒœκ·Έλ₯Ό μ„ νƒν•©λ‹ˆλ‹€.
  • :nth-of-type(μˆ˜μ—΄) : ν˜•μ œ 관계 쀑 μ•žμ—μ„œ μˆ˜μ—΄ 번째둜 λ“±μž₯ν•˜λŠ” νƒœκ·Έλ₯Ό μ„ νƒν•©λ‹ˆλ‹€.
  • :nth-last-of-type(μˆ˜μ—΄) : ν˜•μ œ 관계 쀑 λ’€μ—μ„œ μˆ˜μ—΄ 번째둜 λ“±μž₯ν•˜λŠ” νƒœκ·Έλ₯Ό μ„ νƒν•©λ‹ˆλ‹€.

문자 가상 μš”μ†Œ μ„ νƒμž(문자 μ„ νƒμž)

νƒœκ·Έ λ‚΄λΆ€ νŠΉμ • 쑰건의 문자λ₯Ό μ„ νƒν•˜λŠ” μ„ νƒμžμž…λ‹ˆλ‹€. 가상 μš”μ†Œ μ„ νƒμžλ‘œ ::λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.

λ°˜μ‘ 문자 μ„ νƒμž

μ‚¬μš©μžκ°€ λ¬Έμžμ™€ λ°˜μ‘ν•΄μ„œ μƒκΈ°λŠ” μ˜μ—­μ„ μ„ νƒν•©λ‹ˆλ‹€.

  • ::selection : μ‚¬μš©μžκ°€ λ“œλž˜κ·Έν•œ κΈ€μžλ₯Ό μ„ νƒν•©λ‹ˆλ‹€.

링크 μ„ νƒμž

href 속성을 κ°–κ³  μžˆλŠ” a(anchor) νƒœκ·Έμ— μ μš©λ˜λŠ” μ„ νƒμžμž…λ‹ˆλ‹€.

  • :link : href 속성을 가지고 μžˆλŠ” a νƒœκ·Έλ₯Ό μ„ νƒν•©λ‹ˆλ‹€.
  • :visited : λ°©λ¬Έν–ˆλ˜ 링크λ₯Ό 가지고 μžˆλŠ” a νƒœκ·Έλ₯Ό μ„ νƒν•©λ‹ˆλ‹€.

λΆ€μ • μ„ νƒμž

μ§€κΈˆκΉŒμ§€ 배운 λͺ¨λ“  μ„ νƒμžλ₯Ό λ°˜λŒ€λ‘œ μ μš©ν•  수 있게 λ§Œλ“œλŠ” μ„ νƒμžμž…λ‹ˆλ‹€.

  • :not(μ„ νƒμž) : μ„ νƒμžλ₯Ό λ°˜λŒ€λ‘œ μ μš©ν•©λ‹ˆλ‹€.
input:not([type='password']) {
  background: tomato;
}
/* type값이 passwordκ°€ μ•„λ‹Œ input νƒœκ·Έλ₯Ό μ„ νƒν•©λ‹ˆλ‹€. */

CSS3 μ„ νƒμžλŠ” 맀우맀우맀우 λ‹€μ–‘ν•˜κ³  λ§ŽκΈ°μ— λͺ¨λ‘ μ™ΈμšΈ 수 μ—†μŠ΅λ‹ˆλ‹€. μœ„μ— μ •λ¦¬ν•œ μ„ νƒμžλ“€μ€ 개인적으둜 β€˜μ΄λŸ° 게 μžˆμ—ˆμ§€β€™ μƒκ°ν•˜κ³  μ°Ύμ•„μ„œ μ‚¬μš©ν•  수 μžˆλ„λ‘ 정리해둔 κ²ƒμž…λ‹ˆλ‹€.
λ°˜λ“œμ‹œ κ³΅μ‹λ¬Έμ„œλ₯Ό λ³΄λ©΄μ„œ ν•„μš”ν•œ μ„ νƒμžλ₯Ό μ„œμΉ˜ν•  수 μžˆλŠ” λŠ₯λ ₯을 ν‚€μš°λŠ” 것을 μΆ”μ²œλ“œλ¦½λ‹ˆλ‹€. πŸ’―