๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“š FrontEnd -Study/HTML, CSS

TIL - [CSS ๊ธฐ์ดˆ]

by ChaeLOTUS 2023. 2. 15.
728x90

CSS

CSS๋Š” ์›น ํŽ˜์ด์ง€ ์Šคํƒ€์ผ ๋ฐ ๋ ˆ์ด์•„์›ƒ์„ ์ •์˜ํ•˜๋Š” ์Šคํƒ€์ผ์‹œํŠธ ์–ธ์–ด์ด๋‹ค. ์ง€๊ธˆ๊นŒ์ง€ ํ•™์Šตํ•œ HTML๋กœ ์›น ํŽ˜์ด์ง€์˜ ๊ตฌ์กฐ๋ฅผ ์ž˜ ์„ธ์šฐ๊ณ  ๋‚˜์„œ, ๋” ๋‚˜์€ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜(UX, user experience)์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด CSS๋กœ UI ๋ฐ ๋ ˆ์ด์•„์›ƒ์„ ์ ์ ˆํžˆ ๊ตฌ์„ฑํ•˜๋ฉด ๋ฉ‹์ง„ ์›น ํŽ˜์ด์ง€๋ฅผ ์™„์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

์•Œ์•„์•ผ ํ•  ๋‹จ์œ„

  • ์ ˆ๋Œ€ ๋‹จ์œ„ : px, pt, cm ๋“ฑ...

* ํ”ฝ์…€(px)์€ ๋ณด๊ธฐ ์žฅ์น˜์— ์ƒ๋Œ€์ ์ด๋‹ค. ๋‚ฎ์€ dpi ์žฅ์น˜์˜ ๊ฒฝ์šฐ 1px์€ ๋””์Šคํ”Œ๋ ˆ์ด์˜ ํ•˜๋‚˜์˜ ์žฅ์น˜ ํ”ฝ์…€(๋„ํŠธ)์ด๋‹ค. ํ”„๋ฆฐํ„ฐ ๋ฐ ๊ณ ํ•ด์ƒ๋„ ํ™”๋ฉด์˜ ๊ฒฝ์šฐ 1px๋Š” ์—ฌ๋Ÿฌ ์žฅ์น˜ ํ”ฝ์…€์„ ์˜๋ฏธํ•œ๋‹ค.

 

  • ์ƒ๋Œ€ ๋‹จ์œ„ : %, em, rem, ch, vw, vh ๋“ฑ...

์ƒ๋Œ€ ๊ธธ์ด ๋‹จ์œ„๋Š” ๋‹ค๋ฅธ ๊ธธ์ด ์†์„ฑ์— ์ƒ๋Œ€์ ์ธ ๊ธธ์ด๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์ƒ๋Œ€ ๊ธธ์ด ๋‹จ์œ„๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ๋ Œ๋”๋ง ๋งค์ฒด ๊ฐ„์— ๋” ์ž˜ ์กฐ์ •๋œ๋‹ค.

Tip : em ๋ฐ rem ๋‹จ์œ„๋Š” ์™„๋ฒฝํ•˜๊ฒŒ ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ๋ ˆ์ด์•„์›ƒ์„ ๋งŒ๋“œ๋Š” ๋ฐ ์‹ค์šฉ์ ์ด๋‹ค.
* Viewport = ๋ธŒ๋ผ์šฐ์ € ์ฐฝ ํฌ๊ธฐ. ๋ทฐํฌํŠธ์˜ ๋„ˆ๋น„๊ฐ€ 50cm์ด๋ฉด 1vw = 0.5cm์ž…๋‹ˆ๋‹ค

 

 

๊ธ€๊ผด ์‚ฌ์ด์ฆˆ๋ฅผ ์ •ํ•  ๋•Œ

  1. ๊ธฐ๊ธฐ๋‚˜ ๋ธŒ๋ผ์šฐ์ € ์‚ฌ์ด์ฆˆ ๋“ฑ์˜ ํ™˜๊ฒฝ์— ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๋Š” ์ ˆ๋Œ€์ ์ธ ํฌ๊ธฐ๋กœ ์ •ํ•˜๋Š” ๊ฒฝ์šฐ

px(ํ”ฝ์…€)์„ ์‚ฌ์šฉํ•œ๋‹ค. ํ”ฝ์…€์€ ํฌ๊ธฐ๊ฐ€ ๊ณ ์ •๋œ ์ ˆ๋Œ€ ๋‹จ์œ„์ด๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž ์ ‘๊ทผ์„ฑ์ด ๋ถˆ๋ฆฌํ•˜๋‹ค.

๊ธ€๊ผด์˜ ํฌ๊ธฐ๋ฅผ ํ”ฝ์…€๋กœ ์„ค์ •ํ•˜๋ฉด, ๊ธ€๊ผด ํฌ๊ธฐ๋ฅผ ๋” ํฌ๊ฒŒ ์„ค์ •ํ•˜๋”๋ผ๋„ ๊ธ€๊ผด์˜ ํฌ๊ธฐ๋Š” ํ•ญ์ƒ ์„ค์ •๋œ ํ”ฝ์…€๋กœ ๊ณ ์ •๋œ๋‹ค.

์ œ๋ชฉ(heading)์„ ๊ฐ•์กฐํ•˜๊ธฐ ์œ„ํ•ด ํ”ฝ์…€์„ ์ด์šฉํ•ด ๊ธ€๊ผด์˜ ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ–ˆ์œผ๋‚˜ ์‚ฌ์šฉ์ž์˜ ํ™˜๊ฒฝ์— ๋”ฐ๋ผ ์ผ๋ฐ˜ ํ…์ŠคํŠธ๋ณด๋‹ค ์ž‘๊ฒŒ ๋ณด์ด๋Š” ๊ฒฐ๊ณผ๋ฅผ ์ดˆ๋ž˜ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ”ฝ์…€์€ ๋ชจ๋ฐ”์ผ ๊ธฐ๊ธฐ์ฒ˜๋Ÿผ ์ž‘์€ ํ™”๋ฉด์ด๋ฉด์„œ, ๋™์‹œ์— ๊ณ ํ•ด์ƒ๋„์ธ ๊ฒฝ์šฐ์—๋„ ์ ํ•ฉํ•˜์ง€ ์•Š๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ณ ํ•ด์ƒ๋„์—์„œ๋Š” 1px์ด ๋ชจ๋‹ˆํ„ฐ์˜ ํ•œ ์ ๋ณด๋‹ค ํฌ๊ฒŒ ์—…์Šค์ผ€์ผ(upscale) ๋˜๊ธฐ ๋•Œ๋ฌธ์—, ๋šœ๋ ทํ•˜์ง€ ๋ชปํ•œ ํ˜•ํƒœ๋กœ ์ถœ๋ ฅ๋˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๋‹ค. ํ”ฝ์…€์€ ์ธ์‡„์™€ ๊ฐ™์ด ํ™”๋ฉด์˜ ์‚ฌ์ด์ฆˆ๊ฐ€ ์ •ํ•ด์ง„ ๊ฒฝ์šฐ์— ์œ ๋ฆฌํ•˜๋‹ค.

 

   2.  ์ผ๋ฐ˜์ ์ธ ๊ฒฝ์šฐ

์ƒ๋Œ€ ๋‹จ์œ„์ธ rem์„ ์ถ”์ฒœํ•œ๋‹ค. root์˜ ๊ธ€์ž ํฌ๊ธฐ, ์ฆ‰ ๋ธŒ๋ผ์šฐ์ €์˜ ๊ธฐ๋ณธ ๊ธ€์ž ํฌ๊ธฐ๊ฐ€ 1rem์ด๋ฉฐ, ๋‘ ๋ฐฐ๋กœ ํฌ๊ฒŒ ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด 2rem, ์ž‘๊ฒŒ ํ•˜๋ ค๋ฉด 0.8rem ๋“ฑ์œผ๋กœ ์กฐ์ ˆํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์„ค์ •ํ•œ ๊ธฐ๋ณธ ๊ธ€๊ผด ํฌ๊ธฐ๋ฅผ ๋”ฐ๋ฅด๋ฏ€๋กœ, ์ ‘๊ทผ์„ฑ์— ์œ ๋ฆฌํ•˜๋‹ค. (em์€ ๋ถ€๋ชจ ์—˜๋ฆฌ๋จผํŠธ์— ๋”ฐ๋ผ ์ƒ๋Œ€์ ์œผ๋กœ ํฌ๊ธฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฏ€๋กœ ๊ณ„์‚ฐ์ด ์–ด๋ ต๋‹ค. ์ด์— ๋น„ํ•ด rem์€ root์˜ ๊ธ€์ž ํฌ๊ธฐ์— ๋”ฐ๋ผ์„œ๋งŒ ์ƒ๋Œ€์ ์œผ๋กœ ๋ณ€ํ•œ๋‹ค.)

 

 

ํ™”๋ฉด ์‚ฌ์ด์ฆˆ๋ฅผ ์ •ํ•  ๋•Œ

  1. ๋ฐ˜์‘ํ˜• ์›น(responsive web)์—์„œ ๊ธฐ์ค€์ ์„ ๋งŒ๋“ค ๋•Œ                                                                                                                      ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฐ์Šคํฌํƒ‘์—์„œ ๋ณผ ๋•Œ, ์Šค๋งˆํŠธํฐ์—์„œ ์„ธ๋กœ ๋ชจ๋“œ๋กœ ๋ณผ ๋•Œ, ๊ฐ€๋กœ ๋ชจ๋“œ๋กœ ๋ณผ ๋•Œ, ํƒœ๋ธ”๋ฆฟ์œผ๋กœ ๋ณผ ๋•Œ๊ฐ€ ๊ฐ๊ฐ ๋‹ค๋ฅด๋‹ค. ์ด๋•Œ์—๋Š” ๋””๋ฐ”์ด์Šค ํฌ๊ธฐ๋ณ„๋กœ CSS๋ฅผ ๋‹ฌ๋ฆฌ ์ ์šฉํ•ด์•ผ ํ•œ๋‹ค. ์ด๋•Œ, ๋””๋ฐ”์ด์Šค ํฌ๊ธฐ๋ฅผ ๋‚˜๋ˆ„๋Š” ๊ธฐ์ค€์„ ๋ณดํ†ต px๋กœ ์ •ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด iPhone 12 Pro Max์˜ ๋„ˆ๋น„๋Š” 414px ์ด๋‹ค. ๋ณดํ†ต 450px ๋ฏธ๋งŒ์˜ ๋„ˆ๋น„๋ฅผ ๊ฐ–๋Š” ๋””๋ฐ”์ด์Šค๋Š” ์Šค๋งˆํŠธํฐ ์„ธ๋กœ ๋ชจ๋“œ๋กœ ์ƒ๊ฐํ•ด๋„ ์ข‹๋‹ค.
  2. ํ™”๋ฉด ๋„ˆ๋น„๋‚˜ ๋†’์ด์— ๋”ฐ๋ฅธ ์ƒ๋Œ€์ ์ธ ํฌ๊ธฐ๊ฐ€ ์ค‘์š”ํ•œ ๊ฒฝ์šฐ์—๋Š” vw, vh๋ฅผ ์‚ฌ์šฉํ•˜์ž. ์›น์‚ฌ์ดํŠธ์˜ ๋ณด์ด๋Š” ์˜์—ญ์„ Viewport๋ผ๊ณ  ํ•œ๋‹ค. vw, vh ๋Š” ๊ฐ๊ฐ viewport width์™€ viewport height๋ฅผ ๋œปํ•˜๋ฉฐ, 1vw ๋Š” ๋ณด์ด๋Š” ์˜์—ญ ๋„ˆ๋น„์˜ 1/100์„, 1vh ๋Š” ๋ณด์ด๋Š” ์˜์—ญ ๋†’์ด์˜ 1/100์„ ๋œปํ•œ๋‹ค.  (์ฐธ๊ณ ๋กœ <body> ํƒœ๊ทธ์—์„œ์˜ %๋Š” HTML์ด ์ฐจ์ง€ํ•˜๋Š” ๋ชจ๋“  ์˜์—ญ, ์ฆ‰ ์ง€๊ธˆ์€ ๋ณด์ด์ง€ ์•Š์œผ๋‚˜ ์Šคํฌ๋กค ํ–ˆ์„ ๋•Œ ๋ณด์ด๋Š” ์˜์—ญ๊นŒ์ง€ ํฌํ•จํ–ˆ์„ ๋•Œ ๋น„์œจ)

์…€๋ ‰ํ„ฐ

 

์ „์ฒด ์…€๋ ‰ํ„ฐ

* { }

 

attribute ์…€๋ ‰ํ„ฐ

 

๊ฐ™์€ ์†์„ฑ์„ ๊ฐ€์ง„ ์š”์†Œ๋ฅผ ์„ ํƒํ•œ๋‹ค.

a[href] { }
p[id="only"] { }
p[class~="out"] { }
p[class|="out"] { }
section[id^="sect"] { }
div[class$="2"] { }
div[class*="w"] { }

 

์ž์‹ ์…€๋ ‰ํ„ฐ

 

์ž์‹ ์…€๋ ‰ํ„ฐ๋Š” ์ฒซ ๋ฒˆ์งธ๋กœ ์ž…๋ ฅํ•œ ์š”์†Œ์˜ ๋ฐ”๋กœ ์•„๋ž˜ ์ž์‹์ธ ์š”์†Œ๋ฅผ ์„ ํƒํ•œ๋‹ค. ์•„๋ž˜ ์˜ˆ์‹œ์˜ ๊ฒฝ์šฐ <header> ์š”์†Œ ๋ฐ”๋กœ ์•„๋ž˜์— ์žˆ๋Š” ๋‘ ๊ฐœ์˜ <p> ์š”์†Œ๋Š” ์„ ํƒ๋˜์ง€๋งŒ, <span> ์š”์†Œ์˜ ์ž์‹์ธ <p> ์š”์†Œ๋Š” ์„ ํƒ๋˜์ง€ ์•Š๋Š”๋‹ค.

header > p { }

์˜ˆ์‹œ)

<header>
	<p> <!-- ์„ ํƒ -->
		<span>
			<p></p>
		</span>
	</p>
	<p> <!-- ์„ ํƒ -->
		<span>
			<p></p>
		</span>
	</p>
</header>

 

ํ›„์†์…€๋ ‰ํ„ฐ

ํ›„์† ์…€๋ ‰ํ„ฐ๋Š” ์ฒซ ๋ฒˆ์งธ๋กœ ์ž…๋ ฅํ•œ ์š”์†Œ์˜ ํ›„์†๊นŒ์ง€ ์„ ํƒํ•œ๋‹ค. ์•„๋ž˜ ์˜ˆ์‹œ์˜ ๊ฒฝ์šฐ <header> ์š”์†Œ์˜ ์ž์‹์ธ <p> ์š”์†Œ๋ฟ ์•„๋‹ˆ๋ผ, <header> ์š”์†Œ์˜ ์ž์‹์˜ ์ž์‹์ธ <p> ์š”์†Œ๊นŒ์ง€ ๋ชจ๋‘ ์„ ํƒ๋œ๋‹ค.

header p { }

 

ํ˜•์ œ ์…€๋ ‰ํ„ฐ

ํ˜•์ œ ์…€๋ ‰ํ„ฐ๋Š” ๊ฐ™์€ ๋ถ€๋ชจ ์š”์†Œ๋ฅผ ๊ณต์œ ํ•˜๋ฉด์„œ, ์ฒซ ๋ฒˆ์งธ ์ž…๋ ฅํ•œ ์š”์†Œ ๋’ค์— ์˜ค๋Š” ๋‘ ๋ฒˆ์งธ ์ž…๋ ฅํ•œ ์š”์†Œ๋ฅผ ๋ชจ๋‘ ์„ ํƒํ•œ๋‹ค. 

header ~p { }

 

์ธ์ ‘ ํ˜•์ œ ์…€๋ ‰ํ„ฐ

์ธ์ ‘ ํ˜•์ œ ์…€๋ ‰ํ„ฐ๋Š” ๊ฐ™์€ ๋ถ€๋ชจ ์š”์†Œ๋ฅผ ๊ณต์œ ํ•˜๋ฉด์„œ, ์ฒซ ๋ฒˆ์งธ ์ž…๋ ฅํ•œ ์š”์†Œ ๋ฐ”๋กœ ๋’ค์— ์˜ค๋Š” ๋‘ ๋ฒˆ์งธ ์ž…๋ ฅํ•œ ์š”์†Œ๋ฅผ ์„ ํƒํ•œ๋‹ค. 

header +p { }
<header>
	<section></section>
	<p></p> <!-- ์„ ํƒ -->
	<p></p>
	<p></p>
</header>

 

๊ฐ€์ƒ ํด๋ž˜์Šค ์…€๋ ‰ํ„ฐ

๊ฐ€์ƒ ํด๋ž˜์Šค๋Š” ์š”์†Œ์˜ ์ƒํƒœ ์ •๋ณด์— ๊ธฐ๋ฐ˜ํ•ด ์š”์†Œ๋ฅผ ์„ ํƒํ•œ๋‹ค.

a:link { } /*์‚ฌ์šฉ์ž๊ฐ€ ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ <a>์š”์†Œ๋ฅผ ์„ ํƒ*/
a:visited { } /*์‚ฌ์šฉ์ž๊ฐ€ ๋ฐฉ๋ฌธํ•œ <a>์š”์†Œ๋ฅผ ์„ ํƒ */
a:hover { } /* ๋งˆ์šฐ์Šค๋ฅผ ์š”์†Œ ์œ„์— ์˜ฌ๋ ธ์„ ๋•Œ ์„ ํƒ */
a:active { } /* ํ™œ์„ฑํ™” ๋œ(ํด๋ฆญ๋œ) ์ƒํƒœ์ผ ๋•Œ ์„ ํƒ */
a:focus { } /* ํฌ์ปค์Šค๊ฐ€ ๋“ค์–ด์™€ ์žˆ์„ ๋•Œ ์„ ํƒ */

 

UI ์š”์†Œ ์ƒํƒœ ์…€๋ ‰ํ„ฐ

input:checked + span { } /*์ฒดํฌ ์ƒํƒœ์ผ ๋•Œ ์„ ํƒ. */
input:enabled + span { } /*์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ƒํƒœ์ผ ๋•Œ ์„ ํƒ */
input:disabled + span { } /*์‚ฌ์šฉ ๋ถˆ๊ฐ€๋Šฅํ•œ ์ƒํƒœ์ผ ๋•Œ ์„ ํƒ*/

 

๊ตฌ์กฐ ๊ฐ€์ƒ ํด๋ž˜์Šค ์…€๋ ‰ํ„ฐ

p:first-child { } // p ํƒœ๊ทธ๊ฐ€ ์ฒซ๋ฒˆ์งธ ์ž์‹์ด๋ฉด
ul > li:last-child { } // ul ์ž์‹์—์„œ li๊ฐ€ ๋งˆ์ง€๋ง‰ ์ž์‹์ด๋ฉด
ul > li:nth-child(2n) { } // ul ์ž์‹์—์„œ li๊ฐ€ ์ง์ˆ˜ ์ž์‹์ด๋ฉด
section > p:nth-child(2n+1) { } // section ์ž์‹์—์„œ p๊ฐ€ ํ™€์ˆ˜ ์ž์‹์ด๋ฉด
ul > li:first-child { } // ul ์ž์‹ ์ค‘ li๊ฐ€ ์ฒซ๋ฒˆ์งธ ์ž์‹์ด๋ฉด
li:last-child { } //li ๊ฐ€ ๋งˆ์ง€๋ง‰ ์ž์‹์ด๋ฉด
div > div:nth-child(4) { } // div ์ž์‹ ์ค‘ div ํƒœ๊ทธ๊ธฐ 4๋ฒˆ์งธ ์ž์‹์ด๋ฉด
div:nth-last-child(2) { } // divํƒœ๊ทธ ์ค‘ ๋งˆ์ง€๋ง‰์—์„œ ์‹œ์ž‘ํ•˜๋Š” 2๋ฒˆ์งธ ์ž์‹์ด๋ฉด
section > p:nth-last-child(2n + 1) { } // section ์ž์‹ p ์ค‘ ๋งˆ์ง€๋ง‰์—์„œ ์‹œ์ž‘ํ•˜๋Š” ํ™€์ˆ˜ ์ž์‹์ด๋ฉด
p:first-of-type { } // p ์š”์†Œ ์ค‘ ์ฒซ๋ฒˆ์งธ ์š”์†Œ
div:last-of-type { } // div์š”์†Œ ์ค‘ ๋งˆ์ง€๋ง‰ ์š”์†Œ
ul:nth-of-type(2) { } // ul ์š”์†Œ ์ค‘ 2๋ฒˆ์งธ ์š”์†Œ
p:nth-last-of-type(1) { } // p ์š”์†Œ ์ค‘ ๋งˆ์ง€๋ง‰์—์„œ ์ฒซ๋ฒˆ์งธ
728x90

'๐Ÿ“š FrontEnd -Study > HTML, CSS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[CSS] em / rem  (0) 2023.02.18
TIL - [HTML/CSS ๊ธฐ์ดˆ]  (0) 2023.02.16
[HTML ๊ธฐ์ดˆ]  (0) 2023.02.14
css/ initial vs inherit vs unset  (0) 2022.12.10
css/list sytle type  (0) 2022.12.10

๋Œ“๊ธ€