κ°μ ν΄λμ€ μ νμλ CSS μ€νμΌλ§μ λμ± λ€μ±λ‘κ² λ§λ€μ΄μ£Όλ λꡬμ λλ€. μ΄λ€μ HTML μμμ νΉμ μνλ₯Ό μ ννμ¬ μ€νμΌμ μ μ©νλ©°, μ¬μ©μ μνΈμμ©μ΄λ μμμ ꡬ쑰μ λ°λΌ λμ μΌλ‘ μ€νμΌμ λ³κ²½ν μ μκ² ν©λλ€.
β£ λͺ©μ°¨
λ§ν¬ κ°μ ν΄λμ€ μ νμβ
λ§ν¬ κ°μ μ νμλ μΉ νμ΄μ§μ λ§ν¬μ μ€νμΌμ μ μ©ν λ μ¬μ©λ©λλ€. μ΄ μ νμλ€μ λ§ν¬μ μνμ λ°λΌ λ€λ₯Έ μ€νμΌμ μ§μ ν μ μκ² ν΄ μ€λλ€. μ£Όλ‘ λ€μκ³Ό κ°μ μνλ₯Ό λ€λ£Ήλλ€.
:link
- λ°©λ¬Ένμ§ μμ λ§ν¬μ μ μ©λ©λλ€.
- μ¬μ©μκ° ν΄λΉ λ§ν¬λ₯Ό λ°©λ¬ΈνκΈ° μ μ μ μ©λλ μ€νμΌμ μ§μ ν λ μ¬μ©λ©λλ€.
- μλ₯Ό λ€μ΄, μ¬μ©μκ° μμ§ λ°©λ¬Ένμ§ μμ λ§ν¬μ μμμ λ³κ²½νκ±°λ ν¨κ³Όλ₯Ό μΆκ°νλ λ° μ¬μ©λ μ μμ΅λλ€.
:visited
- μ΄λ―Έ λ°©λ¬Έν λ§ν¬μ μ μ©λ©λλ€.
- μ¬μ©μκ° μ΄λ―Έ λ°©λ¬Έν λ§ν¬λ₯Ό μλ³νκΈ° μν΄ μ¬μ©λ©λλ€.
- μλ₯Ό λ€μ΄, μ΄λ―Έ λ°©λ¬Έν λ§ν¬μ μμμ λ³κ²½νμ¬ μ¬μ©μμκ² μ΄λλ₯Ό μ΄λ―Έ λ°©λ¬Ένλμ§ μκ°μ μΌλ‘ μλ €μ€ μ μμ΅λλ€.
λ§ν¬ κ°μ ν΄λμ€ μ νμ μμ
λ°©λ¬Ένμ§ μμ λ§ν¬λ λ°μ€μ΄ μλ νλμμΌλ‘, μ΄λ―Έ λ°©λ¬Έν λ§ν¬μλ λ°μ€μ΄ μλ 보λΌμμΌλ‘ μ€νμΌμ΄ μ μ©λ©λλ€.
/* λ°©λ¬Ένμ§ μμ λ§ν¬μ λν μ€νμΌ */
a:link {
color: #0066cc; /* λ§ν¬ μμ */
text-decoration: none; /* λ°μ€ μ κ±° */
}
/* μ΄λ―Έ λ°©λ¬Έν λ§ν¬μ λν μ€νμΌ */
a:visited {
color: #660099; /* λ°©λ¬Έν λ§ν¬ μμ */
text-decoration: underline; /* λ°μ€ μΆκ° */
}
μ΄λ¬ν κ°μ μ νμλ₯Ό μ¬μ©νμ¬ λ°©λ¬Ένμ§ μμ λ§ν¬μ μ΄λ―Έ λ°©λ¬Έν λ§ν¬μ λν΄ μλ‘ λ€λ₯Έ μ€νμΌμ μ μ©ν¨μΌλ‘μ¨ μ¬μ©μ κ²½νμ ν₯μν μ μμ΅λλ€. μλ₯Ό λ€μ΄, μ¬μ©μκ° λ°©λ¬Έν λ§ν¬μ λ°©λ¬Ένμ§ μμ λ§ν¬λ₯Ό ꡬλΆνμ¬ μ¬μ©μκ° μ΄λ―Έ λ°©λ¬Έν λ§ν¬λ₯Ό μ½κ² μ°Ύμ μ μλλ‘ λμμ€ μ μμ΅λλ€.
λμ ν΄λμ€ μ νμπ
λμ κ°μ ν΄λμ€ μ νμλ μ¬μ©μμ μνΈμμ©μ λ°λΌ μμμ μνλ₯Ό λ³κ²½νμ¬ μ€νμΌμ μ μ©νλ λ° μ¬μ©λ©λλ€. μ΄λ₯Ό ν΅ν΄ λ§μ°μ€ νΈλ², ν΄λ¦ λ±μ μν©μμ μμμ μ€νμΌμ λμ μΌλ‘ λ³κ²½ν μ μμ΅λλ€.
:hover
:hover κ°μ ν΄λμ€ μ νμλ λ§μ°μ€κ° μμ μλ‘ μ¬λΌκ°μ λ μ μ©λ©λλ€. μ΄λ₯Ό μ΄μ©νλ©΄ μμμ νΈλ² ν¨κ³Όλ₯Ό μΆκ°ν μ μμ΅λλ€. μ£Όλ‘ λ§ν¬λ λ²νΌ λ±μ μμμ μ¬μ©λλ©°, λ§μ°μ€λ₯Ό μ¬λ¦¬λ©΄ μ€νμΌμ΄ λ³κ²½λ©λλ€.
button:hover {
background-color: #FF5733; /* νΈλ² μ λ°°κ²½μ λ³κ²½ */
color: #ffffff; /* νΈλ² μ κΈμμ λ³κ²½ */
cursor: pointer; /* λ§μ°μ€ 컀μ λͺ¨μ λ³κ²½ */
}
:active
:active κ°μ ν΄λμ€ μ νμλ μμκ° νμ±νλμμ λ(ν΄λ¦λμμ λ) μ μ©λ©λλ€. μ£Όλ‘ λ²νΌμ΄λ λ§ν¬ ν΄λ¦ μμ μ¬μ©λλ©°, ν΄λ¦νλ λμμ μ€νμΌμ λ³κ²½ν μ μμ΅λλ€.
button:active {
transform: translateY(2px); /* ν΄λ¦ μ μμλ₯Ό μλλ‘ μ΄λ */
}
μ΄λ¬ν λμ κ°μ ν΄λμ€ μ νμλ₯Ό νμ©νλ©΄ μ¬μ©μμμ μΈν°λμ μ λ°λΌ μΉ μμμ λͺ¨μ΅μ λμ μΌλ‘ λ³νμν¬ μ μμ΄ μ¬μ©μ κ²½νμ ν₯μνλ λ° λμμ΄ λ©λλ€.
μ λ ₯ μμ κ°μ ν΄λμ€ μ νμβ
μ
λ ₯ μμ κ°μ ν΄λμ€ μ νμλ HTMLμ μ
λ ₯ μμλ€μ νΉμ μνμ λ°λΌ μ€νμΌμ μ μ©νλ λ° μ¬μ©λ©λλ€. μ΄λ€ μ νμλ μ
λ ₯ μμκ° μ¬μ©μ μνΈμμ©μ μν΄ λ³ν λ μ μ©λλλ°, μλ₯Ό λ€μ΄ μ¬μ©μκ° ν
μ€νΈ νλλ₯Ό ν΄λ¦νκ±°λ ν¬μ»€μ€λ₯Ό μ£Όκ±°λ, 체ν¬λ°μ€λ₯Ό μ ννκ±°λ ν΄μ ν λ λ±μ μν©μ μ μ©λ©λλ€.
μ
λ ₯ μμλ μ¬μ©μκ° ν
μ€νΈλ₯Ό μ
λ ₯νλ input νκ·Έμ textarea νκ·Έλ‘ μμ±λ©λλ€. μνΈμμ© μμλ μ
λ ₯ μμμ 체ν¬λ°μ€λ₯Ό ν¬ν¨νμ¬ λͺ¨λ μνΈμμ©μ΄ κ°λ₯ν μμλ₯Ό μλ―Έν©λλ€. 체ν¬λ°μ€λ input νκ·Έμ type μμ±κ°μ΄ checkboxμΈ μμλ₯Ό λ§ν©λλ€.
μ
λ ₯ μμμ κ΄λ ¨λ λ΄μ©μ λ μκ³ μΆλ€λ©΄ μλ ν¬μ€ν
μ μ°Έκ³ ν΄ μ£ΌμΈμπ
μ λ ₯ μμ κ°μ ν΄λμ€ μ νμλμ£Όλ‘ λ€μκ³Ό κ°μ μνλ₯Ό λ€λ£Ήλλ€.
:focus
- μ λ ₯ μμκ° ν¬μ»€μ€λ₯Ό λ°μμ λ μ μ©λ©λλ€.
- μ¬μ©μκ° ν΄λΉ μ λ ₯ μμλ₯Ό ν΄λ¦νκ±°λ ν ν€λ‘ ν¬μ»€μ€λ₯Ό μ£Όμμ λ μ μ©λ©λλ€.
input:focus {
border-color: #00ff00;
}
μ μ½λλ μ λ ₯ μμ(input)μ μ΄μ μ΄ λ§μΆ°μ‘μ λ, μ λ ₯ μμμ ν λ리 μμμ μ΄λ‘μμΌλ‘ λ³κ²½ν©λλ€.
:checked
- μ²΄ν¬ μνμΈ μ λ ₯ μμμ μ μ©λ©λλ€. (μ: 체ν¬λ°μ€, λΌλμ€ λ²νΌ)
- μ¬μ©μκ° ν΄λΉ μ λ ₯ μμλ₯Ό μ ννμ λ μ μ©λ©λλ€.
input[type="checkbox"]:checked + label {
text-decoration: line-through;
}
μ μ½λλ 체ν¬λ°μ€(checkbox)κ° μ νλμμ λ, ν΄λΉ 체ν¬λ°μ€μ μ°κ²°λ λΌλ²¨(label)μ ν μ€νΈμ μ·¨μμ μ μΆκ°ν©λλ€.
:disabled
- λΉνμ±νλ μ λ ₯ μμμ μ μ©λ©λλ€.
- ν΄λΉ μ λ ₯ μμκ° λΉνμ±νλμ΄ μμ λ μ μ©λ©λλ€.
input:disabled {
opacity: 0.5;
}
μ λ ₯ μμμ΄ λΉνμ±νλμμ λ, μ λ ₯ μμμ λΆν¬λͺ λ(opacity)λ₯Ό 0.5λ‘ μ€μ νλ μ½λμ λλ€.
:enabled
- νμ±νλ μ λ ₯ μμμ μ μ©λ©λλ€.
- ν΄λΉ μ λ ₯ μμκ° νμ±νλμ΄ μμ λ μ μ©λ©λλ€.
input:enabled {
background-color: #e0e0e0;
}
μ
λ ₯ μμμ΄ νμ±νλμμ λ, μ
λ ₯ μμμ λ°°κ²½μμ νμμΌλ‘ μ€μ νλ CSS μ½λμ
λλ€.
μ΄λ¬ν κ°μ ν΄λμ€ μ νμλ₯Ό μ¬μ©νμ¬ μ
λ ₯ μμμ λ€μν μνμ λ°λΌ μ€νμΌμ μ μ©ν¨μΌλ‘μ¨ μ¬μ©μμκ² λ λμ μ¬μ©μ κ²½νμ μ 곡ν μ μμ΅λλ€.
ꡬ쑰μ κ°μ ν΄λμ€ μ νμπ©
ꡬ쑰μ κ°μ ν΄λμ€ μ νμλ HTML λ¬Έμμ ꡬ쑰λ₯Ό κΈ°λ°μΌλ‘ λ€λ₯Έ νκ·Έμμ κ΄κ³μ λ°λΌ νΉμ μμλ₯Ό μ ννλ CSS μ νμμ λλ€.
μ νμ | μ€λͺ |
:first-child | λΆλͺ¨ μμμ 첫λ²μ§Έ μμ μμλ₯Ό μ νμλ‘ μ§μ |
:last-child | λΆλͺ¨ μμμ λ§μ§λ§ μμ μμλ₯Ό μ νμλ‘ μ§μ |
:nth-child(n) | λΆλͺ¨ μμμ nλ²μ§Έ μμ μμλ₯Ό μ νμλ‘ μ§μ |
:nth-last-child(n) | λ€μμλΆν° nλ²μ§Έ μμ μμλ₯Ό μ νμλ‘ μ§μ |
:nth-of-type(n) | νμ μμ μ€ nλ²μ§Έ μμλ₯Ό μ νμλ‘ μ§μ |
:nth-last-of-type(n) | λ€μμλΆν° νμ μμ μ€ nλ²μ§Έ μμλ₯Ό μ νμλ‘ μ§μ |
:first-of-type(n) | 첫λ²μ§Έλ‘ λ±μ₯νλ μμλ₯Ό μ νμλ‘ μ§μ |
:last-of-type(n) | λ§μ§λ§μΌλ‘ λ±μ₯νλ μμλ₯Ό μ νμλ‘ μ§μ |
nth-child(n)μ nth-of-type(n)μ μ°¨μ΄μ
nth-child(n)
- nth-child(n)μ λΆλͺ¨ μμμ λͺ¨λ μμ μμ μ€μμ nλ²μ§Έ μμλ₯Ό μ νν©λλ€.
- HTML ꡬ쑰μ κ΄κ³μμ΄ λͺ¨λ μμ μμ μ€μμ μμμ λ°λΌ μ νν©λλ€.
- μλ₯Ό λ€μ΄, ul li:nth-child(2)λ ul μμ μλ λͺ¨λ li μ€μμ λ λ²μ§Έ li μμλ₯Ό μ νν©λλ€. μ΄λ ulμ μμμ΄ μλλΌ κ·Έλ₯ liμ μμλ₯Ό λ°λ¦ λλ€.
nth-of-type(n)
- nth-of-type(n)μ λΆλͺ¨ μμμ νΉμ μ ν(type)μ μμ μμ μ€μμ nλ²μ§Έ μμλ₯Ό μ νν©λλ€.
- νΉμ μ ν(type)μ μμλ€ μ€μμ μμμ λ°λΌ μ νν©λλ€.
- μλ₯Ό λ€μ΄, ul li:nth-of-type(2)λ ul μμ μλ li μ€μμ λ λ²μ§Έ li μμλ₯Ό μ νν©λλ€. μ¬κΈ°μ μ€μν μ μ ul μμμμ li μμ μ€μμ μμλ₯Ό λ°λ¦ λλ€.
κ°λ¨ν λ§ν΄μ, nth-child(n)μ λͺ¨λ μμ μμ μ€μμ μμλ₯Ό λ°λΌ μ ννλ λ°λ©΄, nth-of-type(n)μ νΉμ μ ν(type)μ μμ μμ μ€μμ μμλ₯Ό λ°λΌ μ νν©λλ€.
ꡬ쑰μ κ°μ ν΄λμ€ μ νμ μμ
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Structural Pseudo-class Selectors Example</title>
<style>
/* 첫 λ²μ§Έ μμ μμμ μ€νμΌ μ μ© */
ul li:first-child {
color: blue;
}
/* λ§μ§λ§ μμ μμμ μ€νμΌ μ μ© */
ul li:last-child {
color: red;
}
/* μ§μ λ²μ§Έ μμ μμμ μ€νμΌ μ μ© */
ul li:nth-child(even) {
background-color: lightgray;
}
/* νμ λ²μ§Έ μμ μμμ μ€νμΌ μ μ© */
ul li:nth-child(odd) {
background-color: lightblue;
}
/* λ λ²μ§Έ μμ μμλΆν° λ€μ― λ²μ§Έ μμ μμκΉμ§μ μ€νμΌ μ μ© */
ul li:nth-child(n+2):nth-child(-n+5) {
font-weight: bold;
}
/* μ μΌν μμ μμμ μ€νμΌ μ μ© */
div:only-child {
border: 1px solid black;
}
</style>
</head>
<body>
<ul>
<li>첫 λ²μ§Έ</li>
<li>λ λ²μ§Έ</li>
<li>μΈ λ²μ§Έ</li>
<li>λ€ λ²μ§Έ</li>
<li>λ€μ― λ²μ§Έ</li>
<li>μ¬μ― λ²μ§Έ</li>
</ul>
<div>
<p>μ μΌν μμ μμμ
λλ€.</p>
</div>
</body>
</html>
μ νμλ₯Ό νμ©ν μμπ
λ§ν¬ μ€νμΌλ§
/* λ§ν¬μ νΈλ² ν¨κ³Ό μΆκ° */
a:hover {
color: #FF5733; /* νΈλ² μ κΈμ μμ λ³κ²½ */
text-decoration: underline; /* νΈλ² μ λ°μ€ μΆκ° */
}
νΌ μμ μ€νμΌλ§
/* μ
λ ₯ μμμ ν¬μ»€μ€ ν¨κ³Ό μΆκ° */
input:focus {
border: 2px solid #4CAF50; /* ν¬μ»€μ€ μ ν
λ리 μμ λ³κ²½ */
background-color: #f0f0f0; /* ν¬μ»€μ€ μ λ°°κ²½μ λ³κ²½ */
}
리μ€νΈ μ€νμΌλ§
/* 리μ€νΈ μμ΄ν
μ μ€νμΌ μ μ© */
ul li:nth-child(odd) {
background-color: #f2f2f2; /* νμ λ²μ§Έ 리μ€νΈ μμ΄ν
λ°°κ²½μ λ³κ²½ */
}
ul li:nth-child(even) {
background-color: #dddddd; /* μ§μ λ²μ§Έ 리μ€νΈ μμ΄ν
λ°°κ²½μ λ³κ²½ */
}
ν΅μ¬ λ΄μ©π