Front-End/CSS

CSS์˜ ์„ ํƒ์ž

๐ŸŒณ์ง€ํ˜œ์˜ ์ˆฒ 2022. 9. 19. 00:38

๊ธฐ๋ณธ

โ–ถ ์ „์ฒด ์„ ํƒ์ž(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>