CSS์ ์ ํ์
๊ธฐ๋ณธ
โถ ์ ์ฒด ์ ํ์(Universal Selecotr): ๋ชจ๋ ์์๋ฅผ ์ ํ
* {
color: red;
}
โถ ํ๊ทธ ์ ํ์(Type Selector): ๋ณ๋ค๋ฅธ ๊ธฐํธ ์์ด ํ๊ทธ ์ด๋ฆ์ผ๋ก ์ ํ
<ul>
<li>๋ชฉ๋ก</li>
<li>๋ชฉ๋ก</li>
<li>๋ชฉ๋ก</li>
</ul>
li {
color: red;
}
โถ ํด๋์ค ์ ํ์(Class Selector): HTML์์ class ์์ฑ ๊ฐ์ ์ ํด์ฃผ๊ณ css๋ก ๋ถ๋ฌ์ด
<ul>
<li class="orange">๋ชฉ๋ก</li>
<li>๋ชฉ๋ก</li>
<li>๋ชฉ๋ก</li>
</ul>
.orange {
color: orange;
}
โถ ์์ด๋ ์ ํ์(ID Selector): HTML์์ id ์์ฑ์ ๊ฐ์ ์ ํด์ฃผ๊ณ css๋ก ๋ถ๋ฌ์ด
<ul>
<li class="orange">๋ชฉ๋ก</li>
<li id="orange">๋ชฉ๋ก</li>
<li>๋ชฉ๋ก</li>
</ul>
#orange {
color: orange;
}
๋ณตํฉ
โถ ์ผ์น ์ ํ์ (Basic Combinator): ์ ํ์๊ฐ ๋์์ ๋ง์กฑํ๋ ์์ ์ ํ. > ๊ฐ ์ ํ์์ ๊ธฐํธ
<span class="orange">์ค๋ ์ง</span>
span.orange {
color: red;
}
โถ ์์ ์ ํ์(Child Combinator): ์ ํ์ ์์ ์์ ์ ํ
<ul>
<li class="orange">๋ชฉ๋ก</li>
<li>๋ชฉ๋ก</li>
<li>๋ชฉ๋ก</li>
</ul>
ul > .orange {
color: red;
}
โถ ํ์(ํ์) ์ ํ์(Descendant Combinator): ์ ํ์์ ํ์ ์์ ์ ํ. ๋์ด์ฐ๊ธฐ๊ฐ ์ ํ์์ ๊ธฐํธ
<div>
<ul>
<li>์ฌ๊ณผ</li>
<li>๋ธ๊ธฐ</li>
<li class="orange">์ค๋ ์ง</li>
</ul>
<div>๋น๊ทผ<div>
<p>ํ ๋งํ </P>
<span class="orange">์ค๋ ์ง<span>
</div>
<span class="orange">์ค๋ ์ง</span>
div .orange {
color: red;
}
- div ๋ฐ์ค ์์ class๋ช ์ด orange์ธ ์ ํ์๋ฅผ ๋ชจ๋ ๊ฐ๋ฆฌํจ๋ค.
- ์ ์์ ์์ div ๋ฐ์ค ๋ฐ์ ์๋ "<span class="orange">์ค๋ ์ง</span>"๋ ๊ฐ๋ฆฌํค์ง ์๋๋ค.
โถ ์ธ์ ํ์ ์ ํ์(Adjacent Sibling Combinator): ์ ํ์์ ๋ค์ ํ์ ์์ ํ๋๋ฅผ ์ ํ
<ul>
<li>์ฌ๊ณผ</li>
<li>๋ธ๊ธฐ</li>
<li class="orange">์ค๋ ์ง</li>
<li>๋ง๊ณ </li>
<li>์ฌ๊ณผ</li>
</ul>
.orange + li {
color: red;
}
- orange ๋ค์ ์์ <li>๋ง๊ณ </li> ํ๋๊ฐ ์ ํ๋๋ค.
โถ ์ผ๋ฐ ํ์ ์ ํ์(General Sibling Combinator): ์ ํ์์ ๋ค์ ํ์ ์์ ๋ชจ๋ ์ ํ
<ul>
<li>์ฌ๊ณผ</li>
<li>๋ธ๊ธฐ</li>
<li class="orange">์ค๋ ์ง</li>
<li>๋ง๊ณ </li>
<li>์ฌ๊ณผ</li>
</ul>
.orange ~ li {
color: red;
}
- orange ๋ค์ ์์ <li>๋ง๊ณ </li>, <li>์ฌ๊ณผ</li> ๋ชจ๋ ์ ํ๋๋ค.
๊ฐ์ ํด๋์ค(Pseudo-Classes)
โถ :hover: ์ ํ์์ ๋ง์ฐ์ค ์ปค์๊ฐ ์ฌ๋ผ๊ฐ ์๋ ๋์ ์ ํ
div:hover {
color: red;
}
โถ :active: ์ ํ์๊ฐ ๋ง์ฐ์ค๋ฅผ ๋๋ฅด๊ณ ์๋ ๋์ ์ ํ
div:active {
color: red;
}
โถ :focus: ์ ํ์๊ฐ ํฌ์ปค์ค๋๋ฉด ์ ํ
input:focus {
background-color: orange;
}
- Focus๊ฐ ๋ ์ ์๋ ์์๋ HTML ๋ํํ ์ฝํ ์ธ ๊ฐ ํด๋นํ๋ค.
- ex) input, a, button, label, select ๋ฑ
- HTML ๋ํํ ์ฝํ ์ธ ์์๊ฐ ์๋๋๋ผ๋ tabindex ์์ฑ์ ์ฌ์ฉํ ์์๋ Focus๊ฐ ๋ ์ ์๋ค.
- tabindex๊ฐ ๊ธฐ๋ณธ์ผ๋ก ์ค์ ๋์ด ์๋ input๊ฐ์ ์์๋ ๋ฐ๋ก tabindex๋ฅผ ๋ถ์ฌํ์ง ์๋๋ค.
โถ :first-child: ์ ํ์๊ฐ ํ์ ์์ ์ค ์ฒซ์งธ๋ผ๋ฉด ์ ํ
<div class="fruits">
<span>๋ธ๊ธฐ</span>
<span>์๋ฐ</span>
<div>์ค๋ ์ง</div>
<p>๋ง๊ณ </p>
<h3>์ฌ๊ณผ</h3>
</div>
.fruits span:first-child {
color: red;
}
- fruits์ ํ์ ์์์ธ spanํ๊ทธ๋ค ์ค ์ฒซ ๋ฒ์งธ ์์์ธ <span>๋ธ๊ธฐ</span>๋ฅผ ์ ํํ๋ค.
.fruits div:first-child {
color: red;
}
- fruits์ ํ์ ์์์ธ divํ๊ทธ๋ค ์ค ์ฒซ๋ฒ์งธ ์์์ธ <div>์ค๋ ์ง</div>๋ฅผ ์ ํํ๋ค.
โถ :last-child: ์ ํ์๊ฐ ํ์ ์์ ์ค ๋ง์ง๋ง์ด๋ผ๋ฉด ์ ํ
.fruits h3:last-child{
color: red;
}
- fruits์ ํ์ ์์์ธ h3ํ๊ทธ๋ค ์ค ๋ง์ง๋ง ์์์ธ <h3>์ฌ๊ณผ</h3>๋ฅผ ์ ํํ๋ค.
โถ :nth-child(n): ์ ํ์๊ฐ ํ์ ์์ ์ค n์งธ๋ผ๋ฉด ์ ํ
- n์ 0๋ถํฐ ์์ํ๋ค. (Zero-Based Numbering)
.fruits *:nth-child(2) {
color: red;
}
- fruits์ ๋ชจ๋ ํ์ ์์๋ค ์ค 2๋ฒ์งธ ์์์ธ <span>์๋ฐ</span>์ ์ ํํ๋ค.
.fruits *:nth-child(2n){
color: red;
}
- fruits์ ๋ชจ๋ ํ์ ์์๋ค ์ค 2์ ๋ฐฐ์ ๋ฒ์งธ ์์์ธ <span>์๋ฐ</span>, <p>๋ง๊ณ </p>๋ฅผ ์ ํํ๋ค.
.fruits *: nth-child(2n+1) {
color: red;
}
- fruits์ ๋ชจ๋ ํ์ ์์๋ค ์ค 2์ ๋ฐฐ์์ 1์ ๋ํ ๊ฐ(ํ์) ๋ฒ์งธ ์์์ธ <span>๋ธ๊ธฐ</span>, <div>์ค๋ ์ง</div>, <h3>์ฌ๊ณผ</h3>๋ฅผ ์ ํํ๋ค.
.fruits *:nth-child(n+2) {
color: red;
}
- fruits์ ๋ชจ๋ ํ์ ์์๋ค ์ค n๋ฒ์งธ์ 2๋ฅผ ๋ํ ๊ฐ ๋ฒ์งธ ์์์ธ <span>์๋ฐ</span>, <div>์ค๋ ์ง</div>, <p>๋ง๊ณ </p>, <h3>์ฌ๊ณผ</h3>๋ฅผ ์ ํํ๋ค.
โถ ๋ถ์ ์ ํ์(Negation): ์ ํ์๊ฐ ์๋ ์์ ์ ํ
<div class="fruits">
<span>๋ธ๊ธฐ</span>
<span>์๋ฐ</span>
<div>์ค๋ ์ง</div>
<p>๋ง๊ณ </p>
<h3>์ฌ๊ณผ</h3>
</div>
.fruits *:not(span) {
color: red;
}
- fruits์ ๋ชจ๋ ํ์ ์์๋ค ์ค span์ ์ ์ธํ ์์์ธ <div>์ค๋ ์ง</div>, <p>๋ง๊ณ </p>, <h3>์ฌ๊ณผ</h3>๋ฅผ ์ ํํ๋ค.
๊ฐ์ ์์ ์ ํ์(Pseudo-Elements)
โถ ::before: ์ ํ์ ์์์ ๋ด๋ถ ์์ ๋ด์ฉ(Content)์ ์ฝ์ . ์ธ๋ผ์ธ ์์.
.box::before {
content: "์!";
}
<div class="box">
<!-- ::before์ ์ด ์๋ฆฌ๋ฅผ ๊ฐ๋ฆฌํจ๋ค. -->
Content!
</div>
- "์! Content!"์ด ํ๋ฉด์ ์ถ๋ ฅ๋๋ค.
โถ ::after: ์ ํ์ ์์์ ๋ด๋ถ ๋ค์ ๋ด์ฉ(Content)์ ์ฝ์ . ์ธ๋ผ์ธ ์์.
.box::after {
content: "๋ค!";
}
<div>
Content!
<!-- ::after์ ์ด ์๋ฆฌ๋ฅผ ๊ฐ๋ฆฌํจ๋ค. -->
</div>
- "Content! ๋ค!"์ด ํ๋ฉด์ ์ถ๋ ฅ๋๋ค.
์์ฑ ์ ํ์(Attribute)
ํด๋น ์์ฑ์ ํฌํจํ ์์ ์ ํ
โถ [disable]
<input type="text" value="ํ
์คํธ">
<input type="password" value="1234">
<input type="text" value="ABCD" disabled> <!-- ์ ํ -->
โถ [type]
<!-- ๋ชจ๋ ์ ํ -->
<input type="text" value="ํ
์คํธ">
<input type="password" value="1234">
<input type="text" value="ABCD" disabled>
โถ [type="password"]
<input type="text" value="ํ
์คํธ">
<input type="password" value="1234"> <!-- ์ ํ -->
<input type="text" value="ABCD" disabled>