λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
HTML5 & CSS3

[HTML5 & CSS3] 가상 ν΄λž˜μŠ€μ™€ 가상 μš”μ†Œ

by μ½”λ”©ν•˜λŠ” λΆ•μ–΄ 2021. 2. 14.
λ°˜μ‘ν˜•

β–Ά 가상 ν΄λž˜μŠ€μ™€ 가상 μš”μ†Œ

예λ₯Ό λ“€μ–΄ λ©”λ‰΄μ—μ„œ λͺ‡ 번째 ν•­λͺ©μ΄λΌλ“ κ°€ λ‹¨λ½μ˜ 첫 번째 κΈ€μž λ“±μ˜ 경우, μ–΄λ–»κ²Œ 지정해야 ν• κΉŒμš”? 이 λ•Œ 클래슀 이름 μ•žμ— 콜둠(:)을 λΆ™μ—¬ ν‘œμ‹œν•˜λŠ” 가상 ν΄λž˜μŠ€μ™€ 클래슀 이름 μ•žμ— 콜둠 두 개(::)λ₯Ό λΆ™μ—¬ ν‘œμ‹œν•˜λŠ” 가상 μš”μ†Œλ₯Ό μ‚¬μš©ν•œλ‹€.

​

​

​

*μ‚¬μš©μž λ™μž‘μ— λ°˜μ‘ν•˜λŠ” 가상 클래슀

μ‚¬μš©μžκ°€ μ›Ή μš”μ†Œλ₯Ό ν΄λ¦­ν•˜κ±°λ‚˜ 마우슀 μ»€μ„œλ₯Ό μ˜¬λ €λ†“λŠ” λ“± νŠΉμ • λ™μž‘μ„ ν•  λ•Œ μŠ€νƒ€μΌμ΄ λ°”λ€Œλ„λ‘ λ§Œλ“€κ³  μ‹Άλ‹€λ©΄ 가상 클래슀 μ„ νƒμžλ₯Ό μ‚¬μš©ν•œλ‹€.

​

1. :link 가상 클래슀 μ„ νƒμž - λ°©λ¬Έν•˜μ§€ μ•ŠλŠ” 링크에 μŠ€νƒ€μΌ 적용

λ¬Έμ„œ μ•ˆμ˜ ν•˜μ΄νΌλ§ν¬ μ€‘μ—μ„œ μ‚¬μš©μžκ°€ 아직 λ°©λ¬Έν•˜μ§€ μ•Šμ€ 링크에 μŠ€νƒ€μΌμ„ μ μš©ν•œλ‹€. ν…μŠ€νŠΈ λ§ν¬λŠ” 기본적으둜 νŒŒλž€μƒ‰(blue) κΈ€μžμ™€ λ°‘μ€„λ‘œ ν‘œμ‹œλ˜λŠ”λ° 링크의 밑쀄을 μ—†μ• κ±°λ‚˜ 색상을 λ°”κΎΈλ €κ³  ν•  λ•Œ :link μ„ νƒμžλ₯Ό μ‚¬μš©ν•œλ‹€.

​

2. :visited 가상 클래슀 μ„ νƒμž - λ°©λ¬Έν•œ 링크에 μŠ€νƒ€μΌ 적용

λ¬Έμ„œμ˜ 링크 μ€‘μ—μ„œ ν•œ 번 이상 λ°©λ¬Έν•œ 링크에 λŒ€ν•œ μŠ€νƒ€μΌμ„ μ μš©ν•œλ‹€. λ°©λ¬Έν•œ ν…μŠ€νŠΈ λ§ν¬λŠ” 기본적으둜 μžμ£Όμƒ‰(purple)으둜 ν‘œμ‹œλ˜λŠ”λ° μ‚¬μš©μžκ°€ λ°©λ¬Έν–ˆλ˜ 링크도 일반 ν…μŠ€νŠΈ 링크와 색상이 달라지지 μ•Šκ²Œ ν•˜λ €λ©΄ :visited μ„ νƒμžλ₯Ό μ‚¬μš©ν•΄ μ‘°μ ˆν•œλ‹€.

​

3. :hover 가상 클래슀 μ„ νƒμž - μ›Ή μš”μ†Œμ— 마우슀 μ»€μ„œλ₯Ό μ˜¬λ €λ†“μ„ λ•Œμ˜ μŠ€νƒ€μΌ 적용

μ›Ή μš”μ†Œ μœ„λ‘œ 마우슀 μ»€μ„œλ₯Ό μ˜¬λ €λ†“μ„ λ•Œμ˜ μŠ€νƒ€μΌμ„ μ§€μ •ν•œλ‹€. 이 가상 클래슀 μ„ νƒμžλ₯Ό μ‘μš©ν•˜λ©΄ 이미지 μœ„λ‘œ 마우슀 μ»€μ„œλ₯Ό μ˜¬λ €λ†“μœΌλ©΄ λ‹€λ₯Έ μ΄λ―Έμ§€λ‘œ λ°”λ€Œμ—ˆλ‹€κ°€ 마우슀 μ»€μ„œλ₯Ό 치우면 μ›λž˜ μ΄λ―Έμ§€λ‘œ λŒμ•„μ˜€λŠ” λ‘€μ˜€λ²„ 효과(rollover)λ₯Ό λ§Œλ“€ 수 μžˆλ‹€.

​

4. :active 가상 클래슀 μ„ νƒμž - μ›Ή μš”μ†Œλ₯Ό ν™œμ„±ν™”ν–ˆμ„ λ•Œμ˜ μŠ€νƒ€μΌ 적용

λ§ν¬λ‚˜ 이미지 λ“± μ›Ή μš”μ†Œλ₯Ό ν™œμ„±ν™”ν–ˆμ„ λ•Œ(λˆ„λ₯΄κ³  μžˆμ„ λ•Œ)의 μŠ€νƒ€μΌμ„ μ§€μ •ν•œλ‹€. 예λ₯Ό λ“€μ–΄ 링크λ₯Ό ν΄λ¦­ν–ˆμ„ λ•Œμ˜ μŠ€νƒ€μΌμ„ μ§€μ •ν•œλ‹€.

​

5. :focus 가상 클래슀 μ„ νƒμž - μ›Ή μš”μ†Œμ— 초점이 λ§žμΆ”μ–΄μ‘Œμ„ λ•Œμ˜ μŠ€νƒ€μΌ 적용

μ›Ή μš”μ†Œμ— 초점이 λ§žμΆ”μ–΄μ‘Œμ„ λ•Œμ˜ μŠ€νƒ€μΌμ„ μ§€μ •ν•œλ‹€. 예λ₯Ό λ“€μ–΄ 아이디λ₯Ό μž…λ ₯ν•˜κΈ° μœ„ν•΄ ν…μŠ€νŠΈ ν•„λ“œ μ•ˆμ— 마우슀 μ»€μ„œλ₯Ό κ°–λ‹€ λ†“κ±°λ‚˜ tab을 눌러 μ΄ˆμ μ„ μ΄λ™ν–ˆμ„ λ•Œμ˜ μŠ€νƒ€μΌμ„ μ§€μ •ν•œλ‹€.

​

가상 μ„ νƒμžλ₯Ό 링크와 κ΄€λ ¨ν•΄ μ‚¬μš©ν•  λ•ŒλŠ” μ„ νƒμž μˆœμ„œμ— μ£Όμ˜ν•΄μ•Ό ν•œλ‹€. μ•žμ—μ„œ μ‚΄νŽ΄λ³Έ 1~4 λ„€ 가지λ₯Ό λͺ¨λ‘ μ •μ˜ν•œλ‹€λ©΄ :link μ„ νƒμžλΆ€ν„° μ •μ˜ν•˜κ³  :visited, :hover, :active μˆœμ„œλŒ€λ‘œ μ •μ˜ν•œλ‹€. 이 μˆœμ„œκ°€ λ°”λ€Œλ©΄ μŠ€νƒ€μΌμ„ μ •μ˜ν•˜λ”λΌλ„ μ œλŒ€λ‘œ μ μš©λ˜μ§€ μ•ŠλŠ”λ‹€.

​

λ§ν¬μ—μ„œ 가상 μ„ νƒμž μ‚¬μš©ν•˜κΈ°

<style>
   .navi a:link, .navi a:visited { /* 링크(a:link)와 λ°©λ¬Έν–ˆλ˜ 링크(a:visited)의 μŠ€νƒ€μΌ 지정 */
      font-size:14px;
      padding: 10px;
      text-decoration: none; /* 밑쀄 μ—†μŒ */
   }
   .navi a:hover, .navi a:focus { /* 링크 μœ„λ‘œ 마우슀λ₯Ό μ˜¬λ €λ†“κ±°λ‚˜(a:hover) μ΄ˆμ μ„ λ§žμ·„μ„ λ•Œ(a:focus)의 μŠ€νƒ€μΌ 지정 */
      background-color:#222; /* λ°°κ²½ 색 */
      color:#fff; /* κΈ€μž 색 */
   }
   .navi a:active { /* 링크λ₯Ό ν΄λ¦­ν–ˆμ„ λ•Œ(a:active)의 μŠ€νƒ€μΌ 지정 */
      background-color:#f00; /* λ°°κ²½ 색 */
   }
</style>

<body>
<div class="container">
<nav class="navi">
<ul>
   <li><a href="#">이용 μ•ˆλ‚΄</a></li>
   <li><a href="#">객싀 μ†Œκ°œ</a></li>
   <li><a href="#">μ˜ˆμ•½ 방법 및 μš”κΈˆ</a></li>
   <li><a href="#">μ˜ˆμ•½ν•˜κΈ°</a></li>
</ul>
</nav>
</div>
<body>

 

 

​

*UI μš”μ†Œ μƒνƒœμ— λ”°λ₯Έ 가상 클래슀

μ‚¬μš©μžμ˜ λ™μž‘λΏλ§Œ μ•„λ‹ˆλΌ μ›Ή μš”μ†Œμ˜ μƒνƒœμ— 따라 μŠ€νƒ€μΌμ„ 지정할 λ•Œλ„ 가상 클래슀 μ„ νƒμžλ₯Ό μ‚¬μš©ν•œλ‹€. κ·Έμ€‘μ—μ„œλ„ UI(User Interface) μš”μ†Œμ˜ μƒνƒœμ— λ”°λ₯Έ 가상 ν΄λž˜μŠ€λŠ” μ›Ή μ‚¬μ΄νŠΈλ‚˜ μ•± 화면을 λ””μžμΈν•  λ•Œ μ›Ή μš”μ†Œμ˜ μƒνƒœμ— 따라 μŠ€νƒ€μΌμ„ μ§€μ •ν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•œλ‹€.

​

- :enabled 와 :disabled 가상 클래슀 μ„ νƒμž - μš”μ†Œλ₯Ό μ‚¬μš©ν•  수 μžˆμ„ λ•Œμ™€ 없을 λ•Œμ˜ μŠ€νƒ€μΌ 지정

ν•΄λ‹Ή μš”μ†Œκ°€ μ‚¬μš© κ°€λŠ₯ν•œ μƒνƒœμΌ λ•Œμ˜ μŠ€νƒ€μΌμ„ μ§€μ •ν•˜λ €λ©΄ :enabled 클래슀λ₯Ό μ‚¬μš©ν•˜κ³  ν•΄λ‹Ή μš”μ†Œκ°€ μ‚¬μš© λΆˆκ°€λŠ₯ν•œ μƒνƒœμΌ λ•Œμ˜ μŠ€νƒ€μΌμ„ μ§€μ •ν•˜λ €λ©΄ :disabled 클래슀λ₯Ό μ‚¬μš©ν•œλ‹€. 예λ₯Ό λ“€μ–΄ μ—¬λŸ¬ μ€„μ˜ ν…μŠ€νŠΈλ₯Ό μž…λ ₯ν•  수 μžˆλŠ” ν…μŠ€νŠΈ μ˜μ—­ ν•„λ“œ(textarea ν•„λ“œ)λ₯Ό κ²Œμ‹œνŒ μž…λ ₯ ν™”λ©΄μœΌλ‘œ μ‚¬μš©ν•  λ•ŒλŠ” enabled μƒνƒœμ΄μ§€λ§Œ νšŒμ› μ•½κ΄€ 등을 보여쀄 λ•ŒλŠ” μ‚¬μš©μžκ°€ λ‚΄μš©μ„ 보기만 ν•΄μ•Ό ν•˜λ―€λ‘œ disabled μƒνƒœλ‘œ λ§Œλ“€μ–΄μ•Ό ν•œλ‹€.

​

- :checked 가상 클래슀 μ„ νƒμž - λΌλ””μ˜€ λ°•μŠ€λ‚˜ 체크 λ°•μŠ€μ—μ„œ ν•΄λ‹Ή ν•­λͺ©μ„ μ„ νƒν–ˆμ„ λ•Œμ˜ μŠ€νƒ€μΌ 지정

λΌλ””μ˜€ λ°•μŠ€λ‚˜ 체크 λ°•μŠ€μ—μ„œ μ‚¬μš©μžκ°€ ν•΄λ‹Ή ν•­λͺ©μ„ μ„ νƒν–ˆμ„ λ•Œ(μ²΄ν¬ν–ˆμ„ λ•Œ)의 μŠ€νƒ€μΌμ„ μ§€μ •ν•œλ‹€.

​

λΌλ””μ˜€ λ²„νŠΌμ„ ν΄λ¦­ν–ˆμ„ λ•Œ μŠ€νƒ€μΌ μ μš©ν•˜κΈ°

<style>
   input:disabled {
      background:#ddd;
      border:1px #ccc solid;
   }
   input:checked + span {
      color:blue;
   }
</style>

<body>
<form>
<fieldset>
<legend>μ‚¬μš©μž 정보</legend>
   <label>이름 <input type="text" disabled></label>
</fieldset>
<fieldset>
<legend>μ‹ μ²­ κ³Όλͺ©</legend>
<p>이 달에 μ‹ μ²­ν•  κ³Όλͺ©μ„ μ„ νƒν•˜μ„Έμš”</p>
   <label><input type="radio" name="subject" value="speaking"><span>νšŒν™”</span></label>
   <label><input type="radio" name="subject" value="grammar"><span>문법</span></label>
   <label><input type="radio" name="subject" value="writing"><span>μž‘λ¬Έ</span></label>
</fieldset>
</form>
</body>

 

​

​

*ꡬ쑰 가상 클래슀

ꡬ쑰 가상 ν΄λž˜μŠ€λž€ 말 κ·ΈλŒ€λ‘œ μ›Ή λ¬Έμ„œ ꡬ쑰λ₯Ό κΈ°μ€€μœΌλ‘œ νŠΉμ • μœ„μΉ˜μ— μžˆλŠ” μš”μ†Œλ₯Ό μ°Ύμ•„ μŠ€νƒ€μΌμ„ 지정할 λ•Œ μ‚¬μš©ν•˜λŠ” 가상 클래슀 μ„ νƒμžμ΄λ‹€.

​

- :root 가상 클래슀 μ„ νƒμž - λ¬Έμ„œ 전체에 μ μš©ν•˜κΈ°

λ¬Έμ„œ μ•ˆμ˜ 루트(root) μš”μ†Œμ— μŠ€νƒ€μΌμ„ μ μš©ν•œλ‹€.

​

- :nth-child(n)와 :nth-last-child(n) 가상 클래슀 μ„ νƒμž - μžμ‹ μš”μ†Œμ˜ μœ„μΉ˜μ— 따라 μŠ€νƒ€μΌ μ μš©ν•˜κΈ°

μ›Ή λ¬Έμ„œμ—μ„œ νŠΉμ • 뢀뢄에 μŠ€νƒ€μΌμ„ μ μš©ν•˜λ €λ©΄ 보톡 classλ‚˜ id μ„ νƒμžλ₯Ό μ΄μš©ν•΄ 이름을 λΆ™μ—¬ μ£Όκ³  κ·Έ ν΄λž˜μŠ€λ‚˜ id에 λŒ€ν•œ μŠ€νƒ€μΌμ„ μ •μ˜ν•˜λ©΄ λœλ‹€. ν•˜μ§€λ§Œ μ—¬λŸ¬ 개의 ν•­λͺ©μ΄ 일렬(κ°€λ‘œλ‚˜ μ„Έλ‘œ)둜 λ‚˜μ—΄λ˜μ–΄ μžˆλŠ” 경우, classλ‚˜ idλ₯Ό μ‚¬μš©ν•˜μ§€ μ•Šκ³  μŠ€νƒ€μΌμ„ 지정할 ν•­λͺ©μ΄ λͺ‡ λ²ˆμ§Έμ— μžˆλŠ”μ§€λ₯Ό λ”°μ Έ μŠ€νƒ€μΌμ„ μ μš©ν•  수 μžˆλ‹€. 주둜 메뉴 ν•­λͺ©μ— 이 μ„ νƒμžλ₯Ό μ‚¬μš©ν•œλ‹€.

:nth-child(n)λŠ” μ•žμ—μ„œλΆ€ν„° n번째 μžμ‹ μš”μ†Œμ— μŠ€νƒ€μΌμ„ μ μš©ν•˜κ³  :nth-last-child(n)λŠ” λμ—μ„œλΆ€ν„° n번째인 μžμ‹ μš”μ†Œμ— μŠ€νƒ€μΌμ„ μ μš©ν•œλ‹€. an+b처럼 μˆ˜μ‹μ„ μ‚¬μš©ν•  μˆ˜λ„ μžˆλŠ”λ° μ΄λ•Œ n값은 0λΆ€ν„° μ°¨λ‘€λŒ€λ‘œ μ •μˆ˜λ₯Ό λŒ€μž…ν•΄ κ³„μ‚°ν•œλ‹€. λ‹€λ§Œ, μœ„μΉ˜μ— 따라 μŠ€νƒ€μΌμ„ μ μš©ν•˜λŠ” μ„ νƒμžλŠ” ν•΄λ‹Ή μš”μ†Œλ“€μ΄ λͺ¨λ‘ ν•œ λΆ€λͺ¨ μš”μ†Œλ₯Ό κ°–κ³  μžˆμ–΄μ•Όλ§Œ ν•œλ‹€. 즉, λ¬Έμ„œ ꡬ쑰둜 ν‘œμ‹œν–ˆμ„ λ•Œ λͺ¨λ‘ 같은 레벨의 μš”μ†Œμ—¬μ•Ό ν•œλ‹€.

​

ν‘œμ˜ ν™€μˆ˜ 번째 μ—΄μ—λ§Œ λ°°κ²½ 색 λ„£κΈ°

<style>
   table tr:nth-child(2n+1) {
      background:lightgray;
      color:black;
   }
</style>

<body>
<div id="container">
<h1>건강에 쒋은 건강 μ‹ν’ˆ</h1>
<table>
   <tr><td>블루베리</td></tr>
   <tr><td>귀리</td></tr>
   <tr><td>ν† λ§ˆν† </td></tr>
   <tr><td>μ‹œκΈˆμΉ˜</td></tr>
   <tr><td>적포도주</td></tr>
   <tr><td>견과λ₯˜</td></tr>
   <tr><td>브둜콜리</td></tr>
   <tr><td>μ—°μ–΄</td></tr>
   <tr><td>마늘</td></tr>
   <tr><td>λ…Ήμ°¨</td></tr>
</table>
</div>
</body>

 

​

- :nth-of-type(n), :nth-last-of-type(n) 가상 클래슀 μ„ νƒμž - νŠΉμ • νƒœκ·Έ μœ„μΉ˜μ— μŠ€νƒ€μΌ μ μš©ν•˜κΈ°

<p> νƒœκ·Έλ‚˜ <li> νƒœκ·Έκ°€ μ—¬λŸ¬ 개 λ‚˜μ—΄λ˜μ–΄ 있고 각 νƒœκ·Έμ— idλ‚˜ classλ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” μƒνƒœμ—μ„œ λͺ‡ λ²ˆμ§Έμ— μžˆλŠ” <p> νƒœκ·Έ λ˜λŠ” λͺ‡ λ²ˆμ§Έμ— μžˆλŠ” <li> νƒœκ·Έμ²˜λŸΌ νƒœκ·Έμ— 따라 λͺ‡ λ²ˆμ§Έμ— μžˆλŠ” ν•­λͺ©μΈμ§€λ₯Ό 지정해 μŠ€νƒ€μΌμ„ μ μš©ν•  λ•Œ 이 가상 클래슀 μ„ νƒμžλ₯Ό μ‚¬μš©ν•œλ‹€. :nth-of-type(n)은 μ•žμ—μ„œλΆ€ν„° μ„Έμ–΄ n번째 μš”μ†Œμ΄κ³  :nth-last-of-type(n)은 λμ—μ„œλΆ€ν„° μ„Έμ–΄ n번째 μš”μ†Œμ— μŠ€νƒ€μΌμ„ μ μš©ν•œλ‹€.

​

- :first-child, :last-child 가상 클래슀 μ„ νƒμž - 첫 번째, λ§ˆμ§€λ§‰ μš”μ†Œμ— μŠ€νƒ€μΌ μ μš©ν•˜κΈ°

:first-childλŠ” 첫 번째 μžμ‹ μš”μ†Œλ₯Ό 선택해 μŠ€νƒ€μΌμ„ μ μš©ν•˜κ³  :last-childλŠ” λ§ˆμ§€λ§‰ μžμ‹ μš”μ†Œμ— μŠ€νƒ€μΌμ„ μ μš©ν•œλ‹€. 예λ₯Ό λ“€μ–΄ section p:first-childλŠ” section의 p μžμ‹ μš”μ†Œλ“€ 쀑 첫 번째 p μžμ‹ μš”μ†Œλ₯Ό 가리킨닀.

​

1λ²ˆμ§Έμ™€ 4번째 끝에 λ‘₯κ·Ό λͺ¨μ„œλ¦¬ μŠ€νƒ€μΌ 적용

<style>
   ul.navi li:first-child {
      border-top-left-radius: 1em; /* μ™Όμͺ½ 상단 μ½”λ„ˆλ₯Ό λΆ€λ“œλŸ½κ²Œ */
      border-bottom-left-radius: 1em; /* μ™Όμͺ½ ν•˜λ‹¨ μ½”λ„ˆλ₯Ό λΆ€λ“œλŸ½κ²Œ */
   }

/* λ§ˆμ§€λ§‰ ν•­λͺ©μ˜ μŠ€νƒ€μΌ */
   ul.navi li:last-child {
      border-top-right-radius: 1em; /*였λ₯Έμͺ½ 상단 μ½”λ„ˆλ₯Ό λΆ€λ“œλŸ½κ²Œ */
      border-bottom-right-radius: 1em; /* 였λ₯Έμͺ½ ν•˜λ‹¨ μ½”λ„ˆλ₯Ό λΆ€λ“œλŸ½κ²Œ */
   }
</style>

<body>
<div>
<ul class="navi">
   <li class="home"><a href="#">Home</a></li>
   <li id="html"><a href="#">HTML5</a></li>
   <li id="css"><a href="#">CSS3</a></li>
   <li id="jquery"><a href="#">JQuery</a></li>
</ul>
</div>
</body>

 

​

- :first-of-type, :last-of-type 가상 클래슀 μ„ νƒμž - ν˜•μ œ 관계 μš”μ†Œμ˜ μœ„μΉ˜μ— 따라 μŠ€νƒ€μΌ μ μš©ν•˜κΈ°

ν˜•μ œ 관계인 μš”μ†Œ μ€‘μ—μ„œ :first-of-type은 첫 번째 μš”μ†Œ, :last-of-type은 λ§ˆμ§€λ§‰ μš”μ†Œμ— μŠ€νƒ€μΌμ„ μ μš©ν•œλ‹€.

λ‹€μŒ μ˜ˆμ‹œμ—μ„œ 첫 번째 μ†ŒμŠ€λŠ” 레벨이 같은 p μš”μ†Œλ“€ 쀑 첫 번째 p μš”μ†Œμ˜ κΈ€μž 색을 νŒŒλž€μƒ‰μœΌλ‘œ μ§€μ •ν•˜λŠ” μ„ νƒμžμ΄κ³  두 번째 μ†ŒμŠ€λŠ” 레벨이 같은 p μš”μ†Œλ“€ 쀑 λ§ˆμ§€λ§‰ p μš”μ†Œμ˜ κΈ€μž 색을 λΉ¨κ°„μƒ‰μœΌλ‘œ μ§€μ •ν•˜λŠ” μ„ νƒμžμ΄λ‹€.

p:first-of-type { color: blue; }

p:last-of-type { color: red; }

 

 

​

- :only-child, :only-of-type 가상 클래슀 μ„ νƒμž - ν•˜λ‚˜λΏμΈ μžμ‹ μš”μ†Œμ— μŠ€νƒ€μΌ μ μš©ν•˜κΈ°

:only-childλŠ” λΆ€λͺ¨ μš”μ†Œ μ•ˆμ˜ μžμ‹ μš”μ†Œκ°€ μœ μΌν•˜κ²Œ ν•˜λ‚˜μΌ λ•Œ μŠ€νƒ€μΌμ„ μ μš©ν•˜λ©° :only-of-type은 :only-child와 λΉ„μŠ·ν•œλ° ν•΄λ‹Ή μš”μ†Œκ°€ μœ μΌν•œ μš”μ†ŒμΌ λ•Œ μŠ€νƒ€μΌμ„ μ μš©ν•œλ‹€. λ‹€μŒ μ˜ˆμ‹œμ—μ„œ 첫 번째 μ†ŒμŠ€λŠ” μžμ‹ μš”μ†Œκ°€ 였직 p μš”μ†ŒλΏμΌ λ•Œ(λ‹€λ₯Έ μžμ‹ μš”μ†Œκ°€ 있으면 μ•ˆ 됨) p μš”μ†Œμ˜ κΈ€μžλ₯Ό λ…Ήμƒ‰μœΌλ‘œ ν‘œμ‹œν•˜κ³  두 번째 μ†ŒμŠ€λŠ” p μš”μ†Œκ°€ 였직 ν•˜λ‚˜λΏμΌ λ•Œ(λ‹€λ₯Έ μžμ‹ μš”μ†Œκ°€ μžˆμ–΄λ„ 됨)μ—μ„œ p μš”μ†Œμ˜ κΈ€μžλ₯Ό μ§„ν•˜κ²Œ ν‘œμ‹œν•œλ‹€.

p:only-child { color: green; }

p:only-of-type { font-weight: bold; }

 

​

​

*κ·Έ μ™Έ 가상 클래슀

​

- :target 가상 클래슀 μ„ νƒμž - 액컀 λͺ©μ μ§€μ— μŠ€νƒ€μΌ μ μš©ν•˜κΈ°

μ›Ή λ¬Έμ„œμ—μ„œ 같은 μ‚¬μ΄νŠΈμ˜ νŽ˜μ΄μ§€λ‚˜ λ‹€λ₯Έ μ‚¬μ΄νŠΈμ˜ νŽ˜μ΄μ§€λ‘œ 이동할 λ•Œ 링크(link)λ₯Ό μ΄μš©ν•˜κ³  같은 λ¬Έμ„œ μ•ˆμ—μ„œ λ‹€λ₯Έ μœ„μΉ˜λ‘œ 이동할 λ•ŒλŠ” 액컀(anchor)λ₯Ό μ΄μš©ν•œλ‹€. 이 λ•Œ target μ„ νƒμžλ₯Ό μ΄μš©ν•˜λ©΄ μ•΅μ»€λ‘œ μ—°κ²°λœ λΆ€λΆ„, 즉 μ•΅μ»€μ˜ λͺ©μ μ§€κ°€ λ˜λŠ” λΆ€λΆ„μ˜ μŠ€νƒ€μΌμ„ 지정할 수 μžˆλ‹€.

#intro:target { background-color: yellow; }

 

​

- :not 가상 클래슀 μ„ νƒμž - νŠΉμ • μš”μ†Œκ°€ 아닐 λ•Œ μŠ€νƒ€μΌ μ μš©ν•˜κΈ°

:not μ„ νƒμžλŠ” μ΄λ¦„μ—μ„œλ„ μ•Œ 수 μžˆλ“―μ΄ λΆ€μ •μ˜ μ˜λ―Έκ°€ μžˆλ‹€. μ—¬κΈ°μ„œ not은 'κ΄„ν˜Έ μ•ˆμ— μžˆλŠ” μš”μ†Œλ₯Ό μ œμ™Έν•œ'μ΄λΌλŠ” μ˜λ―Έμ΄λ‹€. λ‹€μŒ μ†ŒμŠ€λŠ” #exκ°€ μ•„λ‹Œ λͺ¨λ“  p μš”μ†Œμ—μ„œμ˜ κΈ€μžμƒ‰μ„ νŒŒλž€μƒ‰μœΌλ‘œ μ§€μ •ν•˜λŠ” μŠ€νƒ€μΌμ΄λ‹€.

​

p:not(#ex) { color: blue; }

 

​

​

*가상 μš”μ†Œ

가상 μš”μ†ŒλŠ” λ‚΄μš©μ˜ μΌλΆ€λ§Œ 선택해 μŠ€νƒ€μΌμ„ μ μš©ν•  λ•Œ μ‚¬μš©ν•œλ‹€. 가상 μš”μ†ŒλŠ” 가상 ν΄λž˜μŠ€μ™€ κ΅¬λ³„ν•˜κΈ° μœ„ν•΄ 클래슀 이름 μ•žμ— 콜둠 두 개(::)λ₯Ό λΆ™μ—¬ ν‘œμ‹œν•œλ‹€.

​

- ::first-line μš”μ†Œμ™€ ::first-letter μš”μ†Œ - 첫 번째 쀄, 첫 번째 κΈ€μžμ— μŠ€νƒ€μΌ μ μš©ν•˜κΈ°

이 μš”μ†Œλ“€μ„ μ‚¬μš©ν•˜λ©΄ μ§€μ •ν•œ μš”μ†Œμ˜ 첫 번째 쀄(::first-line)μ΄λ‚˜ 첫 번째 κΈ€μž(::first-letter)에 μŠ€νƒ€μΌμ„ μ‰½κ²Œ μ μš©ν•  수 μžˆλ‹€. ::first-letter μš”μ†ŒλŠ” ν•΄λ‹Ή μš”μ†Œμ˜ 첫 번째 κΈ€μžλ₯Ό κ°€λ¦¬ν‚€λŠ”λ° 첫 번째 κΈ€μžλŠ” λ°˜λ“œμ‹œ 첫 번째 쀄에 μžˆμ–΄μ•Ό ν•œλ‹€. λ§Œμ•½ <p> νƒœκ·Έ μ•ˆμ— <br> νƒœκ·Έκ°€ μžˆμ–΄ 첫 번째 κΈ€μžκ°€ 첫 번째 쀄에 없을 경우, μ μš©ν•  수 μ—†λ‹€.

​

- ::before, ::after μš”μ†Œ - λ‚΄μš©μ˜ μ•žλ’€μ— μ½˜ν…μΈ  μΆ”κ°€ν•˜κΈ°

이 μš”μ†Œλ₯Ό μ‚¬μš©ν•˜λ©΄ νŠΉμ • μš”μ†Œμ˜ λ‚΄μš© μ•ž(:;before)μ΄λ‚˜ λ’€(::after)에 μ§€μ •ν•œ λ‚΄μš©μ„ 넣을 수 μžˆλ‹€. λ‹€μ‹œ 말해 μš”μ†Œμ˜ μ•žλ’€μ— ν…μŠ€νŠΈλ‚˜ 이미지 등을 μΆ”κ°€ν•  수 μžˆλ‹€.

λ‹€μŒ μ˜ˆμ œλŠ” ::after 가상 μš”μ†Œλ₯Ό μ‚¬μš©ν•΄ μ œν’ˆ λͺ©λ‘μ— 'NEW!!'λΌλŠ” ν…μŠ€νŠΈλ₯Ό μΆ”κ°€ν•œ 것이닀. 'NEW!!'λΌλŠ” λ‚΄μš©μ„ 화면에 ν‘œμ‹œν•˜κΈ° μœ„ν•΄ μ‹€μ œλ‘œ HTML νƒœκ·Έλ₯Ό μ‚¬μš©ν•˜κ³  μžˆμ§€λŠ” μ•Šμ§€λ§Œ 가상 μš”μ†Œλ₯Ό μ‚¬μš©ν•˜λ©΄ μ‰½κ²Œ μŠ€νƒ€μΌμ„ μ μš©ν•  수 μžˆλ‹€.

​

가상 μš”μ†Œλ₯Ό μ‚¬μš©ν•΄ λ‚΄μš© ν‘œμ‹œν•˜κΈ°

<style>
   ul li {
      margin:15px;
   }
   li.hot::after {
      content:"NEW!!";
      font-size:x-small;
      padding:2px 4px;
      margin: 0 10px;
      border-radius:2px;
      background:#f00;
      color:#fff;
   }
</style>

<body>
<div class="container">
<h1>μ œν’ˆ λͺ©λ‘</h1>
<ul>
   <li class="hot">μ œν’ˆ A</li>
   <li>μ œν’ˆ B</li>
   <li>μ œν’ˆ C</li>
   <li class="hot">μ œν’ˆ D</li>
</ul>
</div>
</body>

 

λ°˜μ‘ν˜•

λŒ“κΈ€