π΄ λ΄κ° ν·κ°λ €μ μ 리νλ μ λ ν°
μ€νμΌμ μ μ©νκ³ μ νλ HTML μμλ₯Ό νΉμ νκΈ° μν λͺ©μ μΌλ‘ μ¬μ©λλ κ²,
HTML μμλ₯Ό μ λ ν°λ‘ μ§μ νκ³ μ νλ μμμ μ€νμΌμ μ μνλ κ²
볡μκ°μ μ λ ν°λ₯Ό μ°μνμ¬ μ§μ ν μ μκ³ μΌν(,)λ‘ κ΅¬λΆνλ€.
h1, p {
color: red;
}
*
: HTML λ¬Έμ λ΄μ λͺ¨λ μμλ₯Ό μ ν, HTML μμλ₯Ό ν¬ν¨ν λͺ¨λ μμκ° μ νλλ€ (head μμλ ν¬ν¨)
<!DOCTYPE html>
<html>
<head>
<style>
/* λͺ¨λ μμ μ ν */
* { color: red; }
</style>
</head>
<body>
<h1>Heading</h1>
<div>
<p>paragraph 1</p>
<p>paragraph 2</p>
</div>
<p>paragraph 3</p>
</body>
</html>
νκ·Έλͺ
: μ§μ λ νκ·Έλͺ
μ κ°μ§λ μμλ₯Ό μ ν
<!DOCTYPE html>
<html>
<head>
<style>
/* λͺ¨λ p νκ·Έ μμ μ ν */
p { color: red; }
</style>
</head>
<body>
<h1>Heading</h1>
<div>
<p>paragraph 1</p>
<p>paragraph 2</p>
</div>
<p>paragraph 3</p>
</body>
</html>
#id μ΄νΈλ¦¬λ·°νΈ κ°
: id μ΄νΈλ¦¬λ·°νΈ κ°μ μ§μ νμ¬ μΌμΉνλ μμλ₯Ό μ ν, id μ΄νΈλ¦¬λ·°νΈ κ°μ μ€λ³΅λ μ μλ€.
<!DOCTYPE html>
<html>
<head>
<style>
/* id μ΄νΈλ¦¬λ·°νΈ κ°μ΄ p1μΈ μμλ₯Ό μ ν */
#p1 { color: red; }
</style>
</head>
<body>
<h1>Heading</h1>
<div class="container">
<p id="p1">paragraph 1</p>
<p id="p2">paragraph 2</p>
</div>
<p>paragraph 3</p>
</body>
</html>
.class μ΄νΈλ¦¬λ·°νΈ κ°
: class μ΄νΈλ¦¬λ·°νΈ κ°μ μ§μ νμ¬ μΌμΉνλ μμλ₯Ό μ ν, class μ΄νΈλ¦¬λ·°νΈ κ°μ μ€λ³΅ κ°λ₯νλ€.<!DOCTYPE html>
<html>
<head>
<style>
/* class μ΄νΈλ¦¬λ·°νΈ κ°μ΄ containerμΈ λͺ¨λ μμλ₯Ό μ ν */
/* color μ΄νΈλ¦¬λ·°νΈλ μμ μμμ μμλλ€. */
.container { color: red; }
/* not supported in IE */
#p2 { color: initial; }
</style>
</head>
<body>
<h1>Heading</h1>
<div class="container">
<p id="p1">paragraph 1</p>
<p id="p2">paragraph 2</p>
</div>
<p>paragraph 3</p>
</body>
</html>
μ
λ ν°[μ΄νΈλ¦¬λ·°νΈ]
: μ§μ λ μ΄νΈλ¦¬λ·°νΈλ₯Ό κ°λ λͺ¨λ μμ μ ν
<!DOCTYPE html>
<html>
<head>
<style>
/* a μμ μ€μ href μ΄νΈλ¦¬λ·°νΈλ₯Ό κ°λ λͺ¨λ μμ */
a[href] { color: red; }
</style>
</head>
<body>
<a href="http://www.poiemaweb.com">poiemaweb.com</a><br>
<a href="http://www.google.com" target="_blank">google.com</a><br>
<a href="http://www.naver.com" target="_top">naver.com</a>
</body>
</html>
μ
λ ν°[μ΄νΈλ¦¬λ·°νΈ="κ°"]
: μ§μ λ μ΄νΈλ¦¬λ·°νΈλ₯Ό κ°μ§λ©° μ§μ λ κ°κ³Ό μ΄νΈλ¦¬λ·°νΈμ κ°μ΄ μΌμΉνλ λͺ¨λ μμ μ ν<!DOCTYPE html>
<html>
<head>
<style>
/* a μμ μ€μ target μ΄νΈλ¦¬λ·°νΈμ κ°μ΄ "_blank"μΈ λͺ¨λ μμ */
a[target="_blank"] { color: red; }
</style>
</head>
<body>
<a href="http://www.poiemaweb.com">poiemaweb.com</a><br>
<a href="http://www.google.com" target="_blank">google.com</a><br>
<a href="http://www.naver.com" target="_top">naver.com</a>
</body>
</html>
μ
λ ν°[μ΄νΈλ¦¬λ·°νΈ~="κ°"]
: μ§μ λ μ΄νΈλ¦¬λ·°νΈμ κ°μ΄ μ§μ λ κ°μ (곡백μΌλ‘ λΆλ¦¬λ) λ¨μ΄λ₯Ό ν¬ν¨νλ μμ μ ν<!DOCTYPE html>
<html>
<head>
<style>
/* h1 μμ μ€μ title μ΄νΈλ¦¬λ·°νΈ κ°μ "first"λ₯Ό λ¨μ΄λ‘ ν¬ν¨νλ μμ */
h1[title~="first"] { color: red; }
</style>
</head>
<body>
<h1 title="heading first">Heading first</h1>
<h1 title="heading-first">Heading-first</h1>
<h1 title="heading second">Heading second</h1>
<h1 title="heading third">Heading third</h1>
</body>
</html>
μ
λ ν°[μ΄νΈλ¦¬λ·°νΈ|="κ°"]
: μ§μ λ μ΄νΈλ¦¬λ·°νΈμ κ°κ³Ό μΌμΉνκ±°λ μ§μ μ΄νΈλ¦¬λ·°νΈ κ° λ€ μ°μ΄μ(βκ°-β)μΌλ‘ μμνλ μμ μ ν<!DOCTYPE html>
<html>
<head>
<style>
/* p μμ μ€μ lang μ΄νΈλ¦¬λ·°νΈ κ°μ΄ "en"κ³Ό μΌμΉνκ±°λ "en-"λ‘ μμνλ μμ */
p[lang|="en"] { color: red; }
</style>
</head>
<body>
<p lang="en">Hello!</p>
<p lang="en-us">Hi!</p>
<p lang="en-gb">Ello!</p>
<p lang="us">Hi!</p>
<p lang="no">Hei!</p>
</body>
</html>
μ
λ ν°[μ΄νΈλ¦¬λ·°νΈ^="κ°"]
: μ§μ λ μ΄νΈλ¦¬λ·°νΈμ κ°μΌλ‘ μμνλ μμ μ ν<!DOCTYPE html>
<html>
<head>
<style>
/* a μμ μ€μ href μ΄νΈλ¦¬λ·°νΈ κ°μ΄ "https://"λ‘ μμνλ μμ */
a[href^="https://"] { color: red; }
</style>
</head>
<body>
<a href="https://www.test.com">https://www.test.com</a><br>
<a href="http://www.test.com">http://www.test.com</a>
</body>
</html>
μ
λ ν°[μ΄νΈλ¦¬λ·°νΈ$="κ°"]
: μ§μ λ μ΄νΈλ¦¬λ·°νΈμ κ°μΌλ‘ λλλ μμ μ ν<!DOCTYPE html>
<html>
<head>
<style>
/* a μμ μ€μ href μ΄νΈλ¦¬λ·°νΈ κ°μ΄ ".html"λ‘ λλλ μμ */
a[href$=".html"] { color: red; }
</style>
</head>
<body>
<a href="test.html">test.html</a><br>
<a href="test.jsp">test.jsp</a>
</body>
</html>
μ
λ ν°[μ΄νΈλ¦¬λ·°νΈ*="κ°"]
: μ§μ λ μ΄νΈλ¦¬λ·°νΈμ κ°μ ν¬ν¨νλ μμ μ ν<!DOCTYPE html>
<html>
<head>
<style>
/* div μμ μ€μμ class μ΄νΈλ¦¬λ·°νΈ κ°μ "test"λ₯Ό ν¬ν¨νλ μμ */
div[class*="test"] { color: red; }
/* div μμ μ€μμ class μ΄νΈλ¦¬λ·°νΈ κ°μ "test"λ₯Ό λ¨μ΄λ‘ ν¬ν¨νλ μμ */
div[class~="test"] { background-color: yellow; }
</style>
</head>
<body>
<div class="first_test">The first div element.</div>
<div class="second">The second div element.</div>
<div class="test">The third div element.</div>
<p class="test">This is some text in a paragraph.</p>
</body>
</html>
νμ μ λ ν°
μ
λ ν°A μ
λ ν°B
μμ μ 1 λ 벨 μμμ μνλ μμλ₯Ό λΆλͺ¨ μμ
, 1 λ 벨 νμμ μνλ μμλ₯Ό μμ μμ
λΌκ³ νλ€.
μμ λ³΄λ€ N λ 벨 νμμ μνλ μμλ νμ μμ (νμ μμ)
λΌκ³ νλ€.
νμ μ λ ν°λ μ λ ν° Aμ λͺ¨λ νμ(νμ) μμ μ€ μ λ ν° Bμ μΌμΉνλ μμλ₯Ό μ ννλ€.
<!DOCTYPE html>
<html>
<head>
<style>
/* div μμμ νμμμ μ€ p μμ */
div p { color: red; }
</style>
</head>
<body>
<h1>Heading</h1>
<div>
<p>paragraph 1</p>
<p>paragraph 2</p>
<span><p>paragraph 3</p></span>
</div>
<p>paragraph 4</p>
</body>
</html>
μμ μ λ ν°
μ
λ ν°A > μ
λ ν°B
μμ μ λ ν°λ μ λ ν° Aμ λͺ¨λ μμ μμ μ€ μ λ ν° Bμ μΌμΉνλ μ ννλ€.
<!DOCTYPE html>
<html>
<head>
<style>
/* div μμμ μμμμ μ€ p μμ */
div > p { color: red; }
</style>
</head>
<body>
<h1>Heading</h1>
<div>
<p>paragraph 1</p>
<p>paragraph 2</p>
<span><p>paragraph 3</p></span>
</div>
<p>paragraph 4</p>
</body>
</html>
νμ (λμ) μ λ ν°
νμ κ΄κ³(λμ κ΄κ³)μμ λ€μ μΌμΉνλ μμλ₯Ό μ νν λ μ¬μ©
3-1. μΈμ νμ μ λ ν°
μ
λ ν°A + μ
λ ν°B
μ λ ν°Aμ νμ μμ μ€ μ λ ν°A λ°λ‘ λ€μ μΌμΉνλ μ λ B μμλ₯Ό μ ν, Aμ B μ¬μ΄μ λ€λ₯Έ μμκ° μ‘΄μ¬νλ©΄ μ νλμ§ μμ
<!DOCTYPE html>
<html>
<head>
<style>
/* p μμμ νμ μμ μ€μ p μμ λ°λ‘ λ€μ μμΉνλ ul μμλ₯Ό μ ννλ€. */
p + ul { color: red; }
</style>
</head>
<body>
<div>A div element.</div>
<ul>
<li>Coffee</li>
<li>Tea</li>
<li>Milk</li>
</ul>
<p>The first paragraph.</p>
<ul>
<li>Coffee</li>
<li>Tea</li>
<li>Milk</li>
</ul>
<h2>Another list</h2>
<ul>
<li>Coffee</li>
<li>Tea</li>
<li>Milk</li>
</ul>
</body>
</html>
3-2. μΌλ° νμ μ λ ν°
μ
λ ν°A ~ μ
λ ν°B
μ λ ν°Aμ νμ μμ μ€ μ λ ν°A λ€μ μΌμΉνλ μ λ ν°B μμλ₯Ό λͺ¨λ μ ν
<!DOCTYPE html>
<html>
<head>
<style>
/* p μμμ νμ μμ μ€μ p μμ λ€μ μμΉνλ ul μμλ₯Ό λͺ¨λ μ ννλ€.*/
p ~ ul { color: red; }
</style>
</head>
<body>
<div>A div element.</div>
<ul>
<li>Coffee</li>
<li>Tea</li>
<li>Milk</li>
</ul>
<p>The first paragraph.</p>
<ul>
<li>Coffee</li>
<li>Tea</li>
<li>Milk</li>
</ul>
<h2>Another list</h2>
<ul>
<li>Coffee</li>
<li>Tea</li>
<li>Milk</li>
</ul>
</body>
</html>
μμμ νΉμ μνμ λ°λΌ μ€νμΌμ μ μν λ μ¬μ©, νΉμ μνλ μλ₯Ό λ€μ΄ λ€μκ³Ό κ°λ€.
μ΄λ° νΉμ μνμλ μλ ν΄λμ€κ° μ‘΄μ¬νμ§ μμ§λ§ κ°μ ν΄λμ€λ₯Ό μμλ‘ μ§μ ν΄ μ ννλ λ°©λ²μ΄λ€.
κ°μ ν΄λμ€λ λ§μΉ¨ν(.) λμ μ½λ‘ (:)μ μ¬μ©, CSS νμ€μ μν΄ λ―Έλ¦¬ μ μλ μ΄λ¦μ΄ μκΈ° λλ¬Έμ μμμ μ΄λ¦μ μ¬μ© ν μ μλ€.
ν¨ν΄
selector:pseudo-class {
property: value;
}
<!DOCTYPE html>
<html>
<head>
<style>
/* a μμκ° hover μνμΌ λ */
a:hover { background-color: red; }
/* input μμκ° focus μνμΌ λ */
input:focus { background-color: yellow; }
</style>
</head>
<body>
<a href="#">Hover me</a><br><br>
<input type="text" placeholder="focus me">
</body>
</html>
λ§ν¬ μ λ ν°, λμ μ λ ν°
pseudo-class | Description |
---|---|
:link | μ λ ν°κ° λ°©λ¬Ένμ§ μμ λ§ν¬μΌ λ |
:visited | μ λ ν°κ° λ°©λ¬Έν λ§ν¬μΌ λ |
:hover | μ λ ν°μ λ§μ°μ€κ° μ¬λΌμ μμ λ |
:active | μ λ ν°κ° ν΄λ¦λ μνμΌ λ |
:focus | μ λ ν°μ ν¬μ»€μ€κ° λ€μ΄μ μμ λ |
<!DOCTYPE html>
<html>
<head>
<style>
/* a μμκ° λ°©λ¬Ένμ§ μμ λ§ν¬μΌ λ */
a:link { color: orange; }
/* a μμκ° λ°©λ¬Έν λ§ν¬μΌ λ */
a:visited { color: green; }
/* a μμμ λ§μ°μ€κ° μ¬λΌμ μμ λ */
a:hover { font-weight: bold; }
/* a μμκ° ν΄λ¦λ μνμΌ λ */
a:active { color: blue; }
/* text input μμμ password input μμμ ν¬μ»€μ€κ° λ€μ΄μ μμ λ */
input[type=text]:focus,
input[type=password]:focus {
color: red;
}
</style>
</head>
<body>
<a href="#" target="_blank">This is a link</a><br>
<input type="text" value="I'll be red when focused"><br>
<input type="password" value="I'll be red when focused">
</body>
</html>
pseudo-class | Description |
---|---|
:checked | μ λ ν°κ° μ²΄ν¬ μνμΌ λ |
:enabled | μ λ ν°κ° μ¬μ© κ°λ₯ν μνμΌ λ |
:disabled | μ λ ν°κ° μ¬μ© λΆκ°λ₯ν μνμΌ λ |
<!DOCTYPE html>
<html>
<head>
<style>
/* input μμκ° μ¬μ© κ°λ₯ν μνμΌ λ,
input μμ λ°λ‘ λ€μ μμΉνλ μΈμ νμ span μμλ₯Ό μ ν */
input:enabled + span {
color: blue;
}
/* input μμκ° μ¬μ© λΆκ°λ₯ν μνμΌ λ,
input μμ λ°λ‘ λ€μ μμΉνλ μΈμ νμ span μμλ₯Ό μ ν */
input:disabled + span {
color: gray;
text-decoration: line-through;
}
/* input μμκ° μ²΄ν¬ μνμΌ λ,
input μμ λ°λ‘ λ€μ μμΉνλ μΈμ νμ span μμλ₯Ό μ ν */
input:checked + span {
color: red;
}
</style>
</head>
<body>
<input type="radio" checked="checked" value="male" name="gender"> <span>Male</span><br>
<input type="radio" value="female" name="gender"> <span>Female</span><br>
<input type="radio" value="neuter" name="gender" disabled> <span>Neuter</span><hr>
<input type="checkbox" checked="checked" value="bicycle"> <span>I have a bicycle</span><br>
<input type="checkbox" value="car"> <span>I have a car</span><br>
<input type="checkbox" value="motorcycle" disabled> <span>I have a motorcycle</span>
</body>
</html>
pseudo-class | Description |
---|---|
:first-child | μ λ ν°μ ν΄λΉνλ λͺ¨λ μμ μ€ μ²«λ²μ§Έ μμμΈ μμλ₯Ό μ ννλ€. |
:last-child | μ λ ν°μ ν΄λΉνλ λͺ¨λ μμ μ€ λ§μ§λ§ μμμΈ μμλ₯Ό μ ννλ€. |
pseudo-class | Description |
---|---|
:nth-child(n) | μ λ ν°μ ν΄λΉνλ λͺ¨λ μμ μ€ μμμ nλ²μ§Έ μμμΈ μμλ₯Ό μ ννλ€. |
:nth-last-child(n) | μ λ ν°μ ν΄λΉνλ λͺ¨λ μμ μ€ λ€μμ nλ²μ§Έ μμμΈ μμλ₯Ό μ ννλ€. |
pseudo-class | Description |
---|---|
:first-of-type | μ λ ν°μ ν΄λΉνλ μμμ λΆλͺ¨ μμμ μμ μμ μ€ μ²«λ²μ§Έ λ±μ₯νλ μμλ₯Ό μ ννλ€. |
:last-of-type | μ λ ν°μ ν΄λΉνλ μμμ λΆλͺ¨ μμμ μμ μμ μ€ λ§μ§λ§μ λ±μ₯νλ μμλ₯Ό μ ννλ€. |
:nth-of-type(n) | μ λ ν°μ ν΄λΉνλ μμμ λΆλͺ¨ μμμ μμ μμ μ€ μμμ nλ²μ§Έμ λ±μ₯νλ μμλ₯Ό μ ννλ€. |
:nth-last-of-type(n) | μ λ ν°μ ν΄λΉνλ μμμ λΆλͺ¨ μμμ μμ μμ μ€ λ€μμ nλ²μ§Έμ λ±μ₯νλ μμλ₯Ό μ ννλ€. |
<!DOCTYPE html>
<html>
<head>
<style>
/* p μμ μ€μμ 첫λ²μ§Έ μμμ μ ν */
p:first-child { color: red; }
/* p μμ μ€μμ λ§μ§λ§ μμμ μ ν */
/* body μμμ λλ²μ§Έ p μμλ λ§μ§λ§ μμ μμκ° μλλ€.
body μμμ λ§μ§λ§ μμ μμλ div μμμ΄λ€. */
p:last-child { color: blue; }
</style>
</head>
<body>
<p>This paragraph is the first child of its parent (body).</p>
<h1>Welcome to My Homepage</h1>
<p>This paragraph is not the first child of its parent.</p>
<div>
<p>This paragraph is the first child of its parent (div).</p>
<p>This paragraph is not the first child of its parent.</p>
</div>
</body>
</html>
λΆμ μ λ ν°
pseudo-class | Description |
---|---|
:not(μ λ ν°) | μ λ ν°μ ν΄λΉνμ§ μλ λͺ¨λ μμλ₯Ό μ ννλ€. |
<!DOCTYPE html>
<html>
<head>
<style>
/* input μμ μ€μμ type μ΄νΈλ¦¬λ·°νΈμ κ°μ΄ passwordκ° μλ μμλ₯Ό μ ν */
input:not([type=password]) {
background: yellow;
}
</style>
</head>
<body>
<input type="text" value="Text input">
<input type="email" value="email input">
<input type="password" value="Password input">
</body>
</html>
μ ν©μ± μ²΄ν¬ μ λ ν°
pseudo-class | Description |
---|---|
:valid(μ λ ν°) | μ ν©μ± κ²μ¦μ΄ μ±κ³΅ν input μμ λλ form μμλ₯Ό μ ννλ€. |
:invalid(μ λ ν°) | μ ν©μ± κ²μ¦μ΄ μ€ν¨ν input μμ λλ form μμλ₯Ό μ ννλ€. |
<!DOCTYPE html>
<html>
<head>
<style>
input[type="text"]:valid {
background-color: greenyellow;
}
input[type="text"]:invalid {
background-color: red;
}
</style>
</head>
<body>
<label>μ
λ ₯κ°μ΄ λ°λμ νμ
<input type="text" required>
</label>
<br>
<label>νΉμλ¬Έμλ₯Ό ν¬ν¨νμ§ μλ 4μ리 λ¬Έμ λλ μ«μ
<input type="text" value="ab1!"
pattern="[a-zA-Z0-9]{4}" required>
</label>
<br>
<label>νΈλν° λ²νΈ νμ
<input type="text" value="010-1111-2222"
pattern="^\d{3}-\d{3,4}-\d{4}$" required>
</label>
</body>
</html>
μμμ νΉμ λΆλΆμ μ€νμΌμ μ μ©νκΈ° μν΄ μ¬μ©, νΉμ λΆλΆμ΄λ μλ₯Ό λ€μ΄ λ€μκ³Ό κ°λ€.
κ°μ μμμλ λ κ°μ μ½λ‘ (::)μ μ¬μ©νλ€. CSS νμ€μ μν΄ λ―Έλ¦¬ μ μλ μ΄λ¦μ΄ μκΈ° λλ¬Έμ μμμ μ΄λ¦μ μ¬μ©ν μ μλ€.
ν¨ν΄
selector::pseudo-element {
property:value;
}
pseudo-element | Description |
---|---|
::first-letter | μ½ν μΈ μ 첫κΈμλ₯Ό μ ννλ€. |
::first-line | μ½ν μΈ μ 첫μ€μ μ ννλ€. λΈλ‘ μμμλ§ μ μ©ν μ μλ€. |
::after | μ½ν μΈ μ λ€μ μμΉνλ 곡κ°μ μ ννλ€. μΌλ°μ μΌλ‘ content νλ‘νΌν°μ ν¨κ» μ¬μ©λλ€. |
::before | μ½ν μΈ μ μμ μμΉνλ 곡κ°μ μ ννλ€. μΌλ°μ μΌλ‘ content νλ‘νΌν°μ ν¨κ» μ¬μ©λλ€. |
::selection | λλκ·Έν μ½ν μΈ λ₯Ό μ ννλ€. iOS Safari λ± μΌλΆ λΈλΌμ°μ μμ λμ μλλ€. |
<!DOCTYPE html>
<html>
<head>
<style>
/* p μμ μ½ν
μΈ μ 첫κΈμλ₯Ό μ ν */
p::first-letter { font-size: 3em; }
/* p μμ μ½ν
μΈ μ 첫μ€μ μ ν */
p::first-line { color: red; }
/* h1 μμ μ½ν
μΈ μ μ 곡κ°μ content μ΄νΈλ¦¬λ·°νΈ κ°μ μ½μ
νλ€ */
h1::before {
content: " HTML!!! ";
color: blue;
}
/* h1 μμ μ½ν
μΈ μ λ· κ³΅κ°μ content μ΄νΈλ¦¬λ·°νΈ κ°μ μ½μ
νλ€ */
h1::after {
content: " CSS3!!!";
color: red;
}
/* λλκ·Έν μ½ν
μΈ λ₯Ό μ ννλ€ */
::selection {
color: red;
background: yellow;
}
</style>
</head>
<body>
<h1>This is a heading</h1>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Explicabo illum sunt distinctio sed, tempore, repellat rerum et ea laborum voluptatum! Quisquam error fugiat debitis maiores officiis, tenetur ullam amet in!</p>
</body>
</html>