Selector
1. κ°μ
styleλ₯Ό μ μ© νκ³ μνλ HTMLμμλ₯Ό νΉμ ν νμκ° μλ€. μ΄λ μ¬μ©νλ κ²μ΄ μ
λ ν°/μ νμ(Selector)μ΄λ€. styleλ₯Ό μ μ©νκ³ μνλ HTML μμλ₯Ό μ
λ ν°λ‘ νΉμ νκ³ μ νλ μμμ μ€νμΌμ μ μνλ κ². 볡μκ°μ μ
λ ν°λ₯Ό μ°μνμ¬ μ§μ ν μ μμΌλ©° μΌν(,)λ‘ κ΅¬λΆν¨.
νκ·Έ(tag):
<p></p>
μ κ°μ νκ·Έ μ체μμ(element):
<p>hello world</p>
μμ<p>
νκ·Έ λ° λ΄λΆ λΆλΆμ λͺ¨λ ν¬ν¨
<p>
νκ·Έλ₯Ό μ μ©ν μ€νμΌμ΄λΌλ ννμ μ³μ§ μμ. pμμμ μ μ©νλ μ€νμΌλ‘ νννλ κ²μ΄ μ³λ°λ¦.
2. μ 체 μ
λ ν°(Universal Selector)
μ 체 μ λ ν°λ μ€νμΌμ λ¬Έμμ λͺ¨λ μμμ μ μ©ν λ μ¬μ©. html μμλ₯Ό ν¬ν¨ν μμκ° μ νλ¨.(head μμλ ν¬ν¨)
κΈ°λ³Έν * {μμ±: κ°;}
...
<head>
<style>
/* λͺ¨λ μμλ₯Ό μ ν */
* {
color: red;
}
</style>
</head>
<body>
<h1>Welcome my TIL</h1>
<p>λ°κ°μ΅λλ€.</p>
<span>μλ
νμΈμ.</span>
</body>
3. νκ·Έ/νμ
μ
λ ν°(Type Selector)
νκ·Έ μ λ ν°λ νΉμ νκ·Έλ₯Ό μ¬μ©ν λͺ¨λ μμμ μ€νμΌμ μ μ©. νκ·Έ μ νμλ₯Ό μ¬μ©ν΄ μ€νμΌμ μ§μ νλ©΄ ν΄λΉ νκ·Έλ₯Ό μ¬μ©ν λͺ¨λ μμμ μ μ©.
κΈ°λ³Έν νκ·Έλͺ
{ μ€νμΌ κ·μΉ }
<head>
<style>
/* λͺ¨λ p νκ·Έ μμλ₯Ό μ ν */
p {
color: red;
}
</style>
</head>
<body>
<h1>Welcome my TIL</h1>
<p>λ°κ°μ΅λλ€.</p>
<p>μλμ λ΄μ©μ 보μΈμ.</p>
<span>μλ
νμΈμ.</span>
</body>
4. ID μ
λ ν°(ID Selector)
id μ΄νΈλ¦¬λ·°νΈ κ°μ μ§μ νμ¬ μΌμΉνλ μμλ₯Ό μ ν. id μ΄νΈλ¦¬λ·°νΈ κ°μ μ€λ³΅λ μ μλ μ μΌν κ°μ΄λ―λ‘ μ£Όλ‘ λ¬Έμμ λ μ΄μμκ³Ό κ΄λ ¨λ μ€νμΌμ μ§μ νλλ° μ¬μ©.
κΈ°λ³Έν #id μ΄νΈλ¦¬λ·°νΈ κ° { μ€νμΌ κ·μΉ }
<head>
<style>
/* id μ΄νΈλ¦¬λ·°νΈ κ°μ΄ headerμΈ μμλ₯Ό μ ν */
#header {
color: red;
}
</style>
</head>
<body>
<header id="header">
<h1>Welcome my TIL</h1>
<p>λ°κ°μ΅λλ€.</p>
<p>μλμ λ΄μ©μ 보μΈμ.</p>
<span>μλ
νμΈμ.</span>
</header>
</body>
5. ν΄λμ€ μ
λ ν°(Class Selector)
class μ΄νΈλ¦¬λ·°νΈ κ°μ μ§μ νμ¬ μΌμΉνλ μμλ₯Ό μ ν. class μ΄νΈλ¦¬λ·°νΈ κ°μ μ€λ³΅λ μ μμ.
κΈ°λ³Έν .class μ΄νΈλ¦¬λ·°νΈ κ° { μ€νμΌ κ·μΉ }
<head>
<style>
/* λͺ¨λ p νκ·Έ μμλ₯Ό μ ν */
p {
background-color: black;
}
/* class μ΄νΈλ¦¬λ·°νΈ κ°μ΄ text1μΈ λͺ¨λ μμλ₯Ό μ ν */
.text1 {
color: yellow;
}
/* class μ΄νΈλ¦¬λ·°νΈ κ°μ΄ text2μΈ λͺ¨λ μμλ₯Ό μ ν */
.text2 {
color: #fff;
}
/* class μ΄νΈλ¦¬λ·°νΈ κ°μ΄ text-largeμΈ λͺ¨λ μμλ₯Ό μ ν */
.text-large {
font-size: 200%;
}
/* class μ΄νΈλ¦¬λ·°νΈ κ°μ΄ text-centerμΈ λͺ¨λ μμλ₯Ό μ ν */
.text-center {
text-align: center;
}
</style>
</head>
<body>
<header id="header">
<h1>Welcome my TIL</h1>
<p class="text1 text-large">λ°κ°μ΅λλ€.</p>
<p class="text1 text-center">μλμ λ΄μ©μ 보μΈμ.</p>
<p class="text2 text-large text-center">μλμ λ΄μ©μ 보μΈμ.</p>
<span>μλ
νμΈμ.</span>
</header>
</body>
HTMLμμμ class μ΄νΈλ¦¬λ·°νΈ κ°μ 곡백μΌλ‘ ꡬλΆνμ¬ μ¬λ¬ κ° μ§μ ν μ μμ. μμ κ°μ΄ ν΄λμ€ μ λ ν°λ₯Ό μ¬μ©νμ¬ λ―Έλ¦¬ μ€νμΌμ μ μν΄ λκ³ , HTMLμμλ μ΄λ―Έ μ μλμ΄ μλ ν΄λμ€λ₯Ό μ§μ νλ κ²μΌλ‘ νμν μ€νμΌμ μ§μ ν μ μμ. μ΄λ μ¬μ¬μ©μ μΈ‘λ©΄μμ μ μ©ν¨.
Tailwind Cssμ κ°λ μ΄μ§ μμκΉ? μΆλ€. 곡μλ¬Έμ
6. μ΄νΈλ¦¬λ·°νΈ μ
λ ν°(Attribute Selector)
μ§μ λ μ΄νΈλ¦¬λ·°νΈλ₯Ό κ°λ λͺ¨λ μμλ₯Ό μ ν
κΈ°λ³Έν
μ λ ν°[μ΄νΈλ¦¬λ·°νΈ] { μ€νμΌ κ·μΉ }
μ§μ λ μ΄νΈλ¦¬λ·°νΈλ₯Ό κ°μ§λ©° μ§μ λ κ°κ³Ό μ΄νΈλ¦¬λ·°νΈμ κ°μ΄ μΌμΉνλ λͺ¨λ μμλ₯Ό μ ν
κΈ°λ³Έν
μ λ ν°[μ΄νΈλ¦¬λ·°νΈ="κ°"] { μ€νμΌ κ·μΉ }
μ§μ λ μ΄νΈλ¦¬λ·°νΈμ κ°μ΄ (곡백μΌλ‘ λΆλ¦¬λ) λ¨μ΄λ‘ ν¬ν¨νλ μμλ₯Ό μ ν
κΈ°λ³Έν
μ λ ν°[μ΄νΈλ¦¬λ·°νΈ~="κ°"] { μ€νμΌ κ·μΉ }
μ§μ λ μ΄νΈλ¦¬λ·°νΈμ κ°κ³Ό μΌμΉνκ±°λ μ§μ μ΄νΈλ¦¬λ·°νΈ κ° λ€ μ°μ΄μ νμ΄ν°("κ°-")μΌλ‘ μμνλ μμλ₯Ό μ ν
κΈ°λ³Έν
μ λ ν°[μ΄νΈλ¦¬λ·°νΈ|="κ°"] { μ€νμΌ κ·μΉ }
μ§μ λ μ΄νΈλ¦¬λ·°νΈ κ°μΌλ‘ μμνλ μμλ₯Ό μ ν
κΈ°λ³Έν
μ λ ν°[μ΄νΈλ¦¬λ·°νΈ^="κ°"] { μ€νμΌ κ·μΉ }
μ§μ λ μ΄νΈλ¦¬λ·°νΈ κ°μΌλ‘ λλλ μμλ₯Ό μ ν
κΈ°λ³Έν
μ λ ν°[μ΄νΈλ¦¬λ·°νΈ$="κ°"] { μ€νμΌ κ·μΉ }
μ§μ λ μ΄νΈλ¦¬λ·°νΈ κ°μ ν¬ν¨νλ μμλ₯Ό μ ν
κΈ°λ³Έν
μ λ ν°[μ΄νΈλ¦¬λ·°νΈ*="κ°"] { μ€νμΌ κ·μΉ }
<head>
<style>
/* a μμ μ€μ href μ΄νΈλ¦¬λ·°νΈλ₯Ό κ°λ λͺ¨λ μμ */
a[href] {
color: red;
}
/* a μμ μ€μ target μ΄νΈλ¦¬λ·°νΈ κ°μ΄ "_blank"μΈ λͺ¨λ μμ */
a[target="_blank"] {
font-size: 28px;
}
/* h1 μμ μ€μ title μ΄νΈλ¦¬λ·°νΈ κ°μ "first"λ₯Ό λ¨μ΄λ₯Ό ν¬ν¨νλ μμ */
h1[title~="first"] {
color: blue;
}
/* h1 μμ μ€μ lang μ΄νΈλ¦¬λ·°νΈ κ°μ΄ "en"κ³Ό μΌμΉνκ±°λ "en-"λ‘ μμνλ μμ */
h1[lang|="en"] {
background-color: yellow;
}
/* a μμ μ€μ href μ΄νΈλ¦¬λ·°νΈ κ°μ΄ "https://"λ‘ μμνλ μμ */
a[href^="https://"]
{
font-weight: 700;
}
/* a μμ μ€μ href μ΄νΈλ¦¬λ·°νΈ κ°μ΄ ".html"λ‘ λλλ μμ */
a[href$=".html"] {
color: green;
}
/* h1 μμ μ€μμ class μ΄νΈλ¦¬λ·°νΈ κ°μ "test"λ₯Ό ν¬ν¨νλ μμ */
h1[class*="test"] {
font-style: italic;
}
</style>
</head>
<body>
<header id="header">
<a href="https://www.poiemaweb.com">poiemaweb.com</a><br />
<a href="https://www.google.com" target="_blank">google.com</a><br />
<a href="https://www.naver.com" target="_top">naver.com</a><br />
<a href="http://www.test.com" target="_top">test.com</a>
<h1 title="heading first" lang="en" class="first_test">Heading first</h1>
<h1 title="heading-first" lang="en-us" class="second">Heading-first</h1>
<h1 title="heading second" lang="en-gb" class="test">Heading second</h1>
<h1 title="heading third" lang="us" class="second_test">Heading third</h1>
<h1 title="heading third" lang="no">Heading third</h1>
<a href="test.html">test.html</a><br />
<a href="test.jsp">test.jsp</a>
</header>
</body>

7. λ³΅ν© μ
λ ν° (Combinator)
7-1. νμ μ
λ ν° (Descendant Combinator)
μμ μ 1 level μμμ μνλ μμλ₯Ό λΆλͺ¨ μμ, 1 level νμμ μνλ μμλ₯Ό μμ μμ(μμ μμ)λΌ ν¨. μμ λ³΄λ€ n level νμμ μνλ μνλ μμλ νμ μμ(νμ μμ)λΌ ν¨.
<body>
<div>
<h2>λλ μμμ΄λ©΄μ νμμ΄μμ.</h2>
<p>λλ μμμ΄λ©΄μ νμμ΄μμ.</p>
<span>
<p>λλ νμμ΄μμ.</p>
</span>
</div>
</body>
κΈ°λ³Έν μ
λ ν°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>
paragraph 4λ₯Ό μ μΈν λλ¨Έμ§ κ²λ€μ μ€νμΌμ΄ μ μ©λ¨.
7-2. μμ μ
λ ν° (Child Combinator)
μμ μ λ ν°λ μ λ ν°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>
paragraph 1, 2λ§ μ€νμΌμ΄ μ μ©λ¨.
7-3. νμ (λμ) μ
λ ν° (Sibling Combinator)
νμ (λμ) μ λ ν°λ νμ κ΄κ³(λμ κ΄κ³)μμ λ€μ μμΉνλ μμλ₯Ό μ νν λ μ¬μ©νλ€.

7-3-1. μΈμ νμ μ
λ ν° (Adjacent Sibling Combinator)
μ λ ν°Aμ νμ μμ μ€ μ λ ν°A λ°λ‘ λ€μ μμΉνλ μ λ ν°B μμλ₯Ό μ ν. 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μμ(νμμμ ν¬ν¨)κ° μ€νμΌμ΄ μ μ©λλ€. -->
<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>
7-3-2. μΌλ° νμ μ
λ ν° (General Sibling Combinator)
μ λ ν°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μμ(νμμμ ν¬ν¨)κ° μ€νμΌμ΄ μ μ©λλ€. -->
<ul>
<li>Coffee</li>
<li>Tea</li>
<li>Milk</li>
</ul>
<h2>Another list</h2>
<!-- μλμ ulμμ(νμμμ ν¬ν¨)κ° μ€νμΌμ΄ μ μ©λλ€. -->
<ul>
<li>Coffee</li>
<li>Tea</li>
<li>Milk</li>
</ul>
</body>
</html>
8. κ°μ ν΄λμ€ μ
λ ν° (Pseudo-Class Selector)
κ°μ ν΄λμ€λ μμμ νΉμ μνμ λ°λΌ μ€νμΌμ μ μν λ μ¬μ©.
λ§μ°μ€κ° μ¬λΌμ μμ λ
λ§ν¬λ₯Ό λ°©λ¬Ένμ λμ μμ§ λ°©λ¬Ένμ§ μμμ λ
ν¬μ»€μ€κ° λ€μ΄μ μμ λ
μ΄λ¬ν νΉμ μνμλ μλ ν΄λμ€κ° μ‘΄μ¬νμ§ μμ§λ§ κ°μ ν΄λμ€λ₯Ό μμλ‘ μ§μ νμ¬ μ ννλ λ°©λ² κ°μ ν΄λμ€λ λ§μΉ¨ν(.) λμ μ½λ‘ (:)μ μ¬μ©, κ°μ ν΄λμ€λ 미리 μ μλ μ΄λ¦μ΄ μκΈ° λλ¬Έμ μμμ μ΄λ¦μ μ¬μ©ν μ μμ.
μ¬μ©λ² μ
λ ν°:κ°μν΄λμ€ { ν΄λμ€ κ·μΉ }
<!DOCTYPE html>
<html>
<head>
<style>
/* a μμκ° hover μνμΌ λ */
a:hover {
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>
8-1. λ§ν¬ μ
λ ν° (Link pseudo-classes), λμ μ
λ ν° (User action pseudo-classes)
:link
μ λ ν°κ° λ°©λ¬Ένμ§ μλ λ§ν¬μΌ λ
:visited
μ λ ν°κ° λ°©λ¬Έν λ§ν¬μΌ λ
:hover
μ λ ν°κ° λ§μ°μ€κ° μ¬λΌμ μμ λ
:active
μ λ ν°κ° ν΄λ¦λ μνμΌ λ
:focus
μ λ ν°μ ν¬μ»€μ€κ° λ€μ΄μ μμ λ
<!DOCTYPE html>
<html>
<head>
<style>
/* a μμκ° λ°©λ¬Ένμ§ μμ λ§ν¬μΌ λ */
a:link {
color: red;
}
/* a μμκ° λ°©λ¬Έν λ§ν¬μΌ λ */
a:visited {
color: blue;
}
/* a μμμ λ§μ°μ€κ° μ¬λΌμ μμ λ */
a:hover {
font-weight: 700;
}
/* a μμκ° ν΄λ¦λ μνμΌ λ */
a:active {
color: green;
}
/* 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>
8-2. UI μμ μν μ
λ ν° (UI element states pseudo-classes)
:checked
μ λ ν°κ° μ²΄ν¬ μνμΌ λ
:enabled
μ λ ν°κ° μ¬μ© κ°λ₯ν μνμΌ λ
:disabled
μ λ ν°κ° μ¬μ© λΆκ°λ₯ν μνμΌ λ
<!DOCTYPE html>
<html>
<head>
<style>
/* input μμκ° μ¬μ© κ°λ₯ν μνμΌ λ, input μμ λ°λ‘ λ€μ μμΉνλ μΈμ νμ span μμλ₯Ό μ ν */
input:enabled + span {
color: red;
}
/* input μμκ° μ¬μ© λΆκ°λ₯ν μνμΌ λ, input μμ λ°λ‘ λ€μ μμΉνλ μΈμ νμ span μμλ₯Ό μ ν */
input:disabled + span {
color: blue;
}
/* 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>
8-3. ꡬ쑰 κ°μ ν΄λμ€ μ
λ ν° (Structural pseudo-classes)
:first-child
μ λ ν°μ ν΄λΉνλ λͺ¨λ μμ μ€ μ²«λ²μ§Έ μμμΈ μμλ₯Ό μ ν, νμ μμ μ€ μ μΌ μ²« μμλ₯Ό μ ν
:last-child
μ λ ν°μ ν΄λΉνλ λͺ¨λ μμ μ€ λ§μ§λ§ μμμΈ μμλ₯Ό μ ν, νμ μμ μ€ μ μΌ λ§μ§λ§ μμλ₯Ό μ ν
<!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 text isn't selected: it's not last child.</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>

:nth-child(n)
μ λ ν°μ ν΄λΉνλ λͺ¨λ μμ μ€ μμμ nλ²μ§Έ μμμΈ μμλ₯Ό μ ν
:nth-last-child(n)
μ λ ν°μ ν΄λΉνλ λͺ¨λ μμ μ€ λ€μμ nλ²μ§Έ μμμΈ μμλ₯Ό μ ν
:first-of-type
μ λ ν°μ ν΄λΉνλ μμμ λΆλͺ¨ μμμ μμ μμ μ€ μ²«λ²μ§Έ λ±μ₯νλ μμλ₯Ό μ ν
:last-of-type
μ λ ν°μ ν΄λΉνλ μμμ λΆλͺ¨ μμμ μμ μμ μ€ λ§μ§λ§μ λ±μ₯νλ μμλ₯Ό μ ν
:nth-of-type(n)
μ λ ν°μ ν΄λΉνλ μμμ λΆλͺ¨ μμμ μμ μμ μ€ μμμ nλ²μ§Έ λ±μ₯νλ μμλ₯Ό μ ν
:nth-last-type(n)
μ λ ν°μ ν΄λΉνλ μμμ λΆλͺ¨ μμμ μμ μμ μ€ λ€μμ nλ²μ§Έ λ±μ₯νλ μμλ₯Ό μ ν
ꡬ쑰 κ°μ μ λ ν°λ μκ°λ³΄λ€ ꡬλ³νκΈ°κ° μ΄λ ΅λ€. μ¬λ¬λ² μ°λ©΄μ μ΅μν΄μ§λλ‘ λ Έλ ₯νκΈ° κ°κ°μ ꡬ쑰 κ°μ μ λ ν°λ§λ€ νΉμ§μ΄ μλ€. λͺ¨λ λ€λ₯΄λ―λ‘ μν©μ λ§κ² κ³ λ―Όνλ©° μ¬μ©νκΈ° μν©μ λ°λΌμλ κ°μ μμλ₯Ό μ ννλ κ²½μ°λ μλ€.
8-4. λΆμ μ
λ ν° (Negation pseudo-class)
μ λ ν°μ ν΄λΉνμ§ μλ λͺ¨λ μμλ₯Ό μ ν
μ¬μ©λ² :not(μ
λ ν°) { μ€νμΌ κ·μΉ }
<!DOCTYPE html>
<head>
<style>
/* input μμ μ€μμ type μ΄νΈλ¦¬λ·°νΈ κ°μ΄ passwordκ° μλ μμλ₯Ό μ ν */
input:not([type="password"]) {
color: red;
}
</style>
</head>
<body>
<input type="text" value="Text input" />
<input type="email" value="email input" />
<input type="password" value="Password input" />
</body>
<!DOCTYPE html>
<head>
<style>
div {
max-width: 300px;
padding: 10px;
margin-bottom: 10px;
}
/* div μμ μ€μμ 1, 4, 7...λ²μ§Έ λ±μ₯νλ μμκ° μλ μμλ§μ μ ν */
/* 1, 4, 7... : κ³΅μ°¨κ° 3μΈ λ±μ°¨μμ΄ */
div:not(:nth-child(3n + 1)) {
color: red;
}
/* div μμ μ€μμ 4λ²μ§Έ μ΄ν λ±μ₯νλ μμκ° μλ μμλ§μ μ ν */
div:not(:nth-of-type(n + 4)) {
background-color: yellow;
}
</style>
</head>
<body>
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
<div>6</div>
<div>7</div>
</body>
μμ κ²½μ°
nth-child()
κ³Όnth-of-type()
μ€ μ무거λ μ¬μ©ν΄λ κ°μ μμλ€μ΄ μ νλλ€.

8-5. μ ν©μ± μ²΄ν¬ μ
λ ν° (validity pseudo-class)
:valid
μ ν©μ± κ²μ¦μ΄ μ±κ³΅ν input μμ λλ form μμλ₯Ό μ ννλ€.
:invalid
μ ν©μ± κ²μ¦μ΄ μ€ν¨ν input μμ λλ form μμλ₯Ό μ ννλ€.
<!DOCTYPE html>
<html>
<head>
<style>
/* μ ν©μ± κ²μ¦μ μ±κ³΅ν κ²½μ° */
input[type="text"]:valid {
background-color: white;
}
/* μ ν©μ± κ²μ¦μ μ€ν¨ν κ²½μ° */
input[type="text"]:invalid {
background-color: red;
}
</style>
</head>
<body>
<label
>μ
λ ₯κ°μ΄ λ°λμ νμ
<input type="text" required />
</label>
</body>
</html>

9. κ°μ μμ μ
λ ν° (Pseudo-Element Selector)
κ°μ μμλ μμμ νΉμ λΆλΆμ μ€νμΌμ μ μ©νκΈ° μνμ¬ μ¬μ©
μμ μ½ν μΈ μ 첫κΈμ λλ 첫μ€
μμ μ½μ²ΈμΈ μ μ λλ λ€
μ¬μ©λ² μ
λ ν°::pseudo-element { μ€νμΌ κ·μΉ}
::first-letter
μ½ν μΈ μ 첫κΈμλ₯Ό μ ν
::first-line
μ½ν μΈ μ 첫μ€μ μ ν, λΈλ‘ μμμλ§ μ μ©
::after
μ½ν
μΈ μ λ€μ μμΉνλ 곡κ°μ μ ν, μΌλ°μ μΌλ‘ content
νλ‘νΌν°μ ν¨κ» μ¬μ©
::before
μ½ν
μΈ μ μμ μμΉνλ 곡κ°μ μ ν, μΌλ°μ μΌλ‘ content
νλ‘νΌν°μ ν¨κ» μ¬μ©
::selection
λλκ·Έ ν μ½ν μΈ λ₯Ό μ ν, iOS Safari λ± μΌλΆ λΈλΌμ°μ μμλ λμνμ§ μμ
<!DOCTYPE html>
<head>
<style>
/* p μμ μ½ν
μΈ μ 첫κΈμλ₯Ό μ ν */
p::first-letter {
font-size: 40px;
}
/* p μμ μ½ν
μΈ μ 첫μ€μ μ ν */
p::first-line {
color: blue;
}
/* h1 μμ μ½ν
μΈ μ μ 곡κ°μ content μ΄νΈλ¦¬λ·°νΈ κ°μ μ½μ
*/
h1::after {
content: "HELLO!! ";
color: red;
}
/* h1 μμ μ½ν
μΈ μ λ£ κ³΅κ°μ content μ΄νΈλ¦¬λ·°νΈ κ°μ μ½μ
*/
h1::before {
content: " WORLD!!";
color: green;
}
/* p μμ μ€ λλκ·Έν μ½ν
μΈ λ₯Ό μ ν */
p::selection {
background: yellow;
}
</style>
</head>
<body>
<h1>μ λͺ©μ
λλ€.</h1>
<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Explicabo illum
sunt distinctio sed, tempore,<br />
repellat rerum et ea laborum voluptatum! Quisquam error fugiat debitis
maiores officiis, tenetur ullam amet in!
</p>
</body>

μ°Έκ³
poiemaweb 2-2 μ λ ν° λμ - HTML + CSS + μλ°μ€ν¬λ¦½νΈ μΉ νμ€μ μ μ
π 2022-07-10
Last updated