[๐Ÿ’ป ์ฝ”๋“œ์Šคํ…Œ์ด์ธ  FE 44๊ธฐ] ๋ถ€ํŠธ์บ ํ”„ - CSS, ์ž๊ธฐ์†Œ๊ฐœ ํŽ˜์ด์ง€ ์ž‘์—…

JiEunยท2023๋…„ 2์›” 15์ผ
0
post-thumbnail

โœ”๏ธ ์‹œ์ž‘

๊ธฐ๋ณธ์ ์ธ CSS๋Š” ์•Œ๊ณ  ์žˆ๋‹ค ์ƒ๊ฐ ํ–ˆ๋Š”๋ฐ ์ด๋ฒˆ ํ•™์Šต์„ ํ†ตํ•ด ๋†“์น˜๊ณ  ์žˆ๋˜ ๋ถ€๋ถ„๊ณผ
์ •ํ™•ํ•œ ๋ช…์นญ ๋“ฑ์— ๋Œ€ํ•ด ์•Œ ์ˆ˜ ์žˆ์—ˆ๋‹ค. CSS๋Š” ๊ณต๋ถ€ํ•˜๋ฉด ํ•  ์ˆ˜๋ก ์žฌ๋ฐŒ์–ด์ง€๊ธฐ๋„ ํ•˜์ง€๋งŒ ํ•œํŽธ์œผ๋กœ ์–ด๋ ค์›Œ์ง„๋‹ค. Javascript, React์—๋งŒ ๋ชฐ๋‘ํ•˜์ง€๋ง๊ณ  ๊พธ์ค€ํžˆ HTML/CSS์—๋„ ๊ดŒ์‹ฌ์„ ์ค˜์•ผ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค.


๐Ÿ“CSS ๊ธฐ์ดˆ

โœ”๏ธ ์ ˆ๋Œ€๋‹จ์œ„, ์ƒ๋Œ€๋‹จ์œ„

  • ์ ˆ๋Œ€๋‹จ์œ„ : px, pt
    โ—๏ธ ๊ณ ์ •๋œ ์ ˆ๋Œ€ ๋‹จ์œ„๋กœ ์ ‘๊ทผ์„ฑ์ด ์ข‹์ง€ ์•Š๋‹ค.
  • ์ƒ๋Œ€๋‹จ์œ„ : em, rem, vh, vw
    โ—๏ธ์‚ฌ์ด์ฆˆ๊ฐ€ ๋‹ค๋ฅธ ํ•ด์ƒ๋„์— ๋”ฐ๋ผ ๋น„๋ก€ํ•ด์„œ ์กฐ์ ˆ ํ•œ๋‹ค. ์ ‘๊ทผ์„ฑ์— ์šฉ์ดํ•˜๋‹ค

em์€ ๋ถ€๋ชจ element์— ๋”ฐ๋ผ ์ƒ๋Œ€์ ์œผ๋กœ ํฌ๊ธฐ๊ฐ€ ๋ณ€๊ฒฝ๋ผ ์ผ๋ฐ˜์ ์ธ ๊ฒฝ์šฐ rem์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค. rem์€ root๊ธ€์ž ํฌ๊ธฐ์— ๋”ฐ๋ผ์„œ๋งŒ ์ƒ๋Œ€์ ์œผ๋กœ ๋ณ€ํ•œ๋‹ค.(๋ฌธ์„œ ์ „์ฒด๋ฅผ ๊ธฐ์ค€)

ํ™”๋ฉด ์‚ฌ์ด์ฆˆ๋ฅผ ์ •ํ•  ๋•Œ %, vw, vh๋ฅผ ์ด์šฉํ•˜๋ฉฐํžŒ๋‹ค.

โ—๏ธ%๋‹จ์œ„๋กœ ํŽ˜์ด์ง€ ๋†’์ด๋ฅผ ์ง€์ •ํ•  ๊ฒฝ์šฐ ๋ณด์ด์ง€ ์•Š๋Š” ์˜์—ญ๊นŒ์ง€ ์žก์•„ ์Šคํฌ๋กค์ด ์ƒ๊ธฐ๊ธฐ ๋•Œ๋ฌธ์— vh๋‹จ์œ„๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

โœ”๏ธ block, inline, inline-block์˜ ์ฐจ์ด์ 

  • block : ์ฝ˜ํ…์ธ  ์˜์—ญ ์ƒ๊ด€์—†์ด ์ „๋ถ€ ์ฐจ์ง€ํ•˜๊ณ (width 100%), ์ค„๋ฐ”๊ฟˆ์ด ์ผ์–ด๋‚˜์ง€ ์•Š๋Š”๋‹ค.
  • inline : ์ฝ˜ํ…Œ์ธ  ์˜์—ญ ๋งŒํผ๋งŒ ์ฐจ์ง€ํ•˜๊ณ  ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์—†๋‹ค.
  • inline-block : block + inline์œผ๋กœ ์ค„๋ฐ”๊ฟˆ์ด ์ผ์–ด๋‚˜์ง€ ์•Š๋Š” ๋™์‹œ์— block ๋ฐ•์Šค ํŠน์ง•์„ ๊ฐ–๋Š”๋‹ค.

โœ”๏ธ margin, padding

  • margin : ๋ฐ”๊นฅ ์—ฌ๋ฐฑ (์Œ์ˆ˜ ๊ฐ’ ์ง€์ •์ด ๊ฐ€๋Šฅํ•˜๋‹ค.)
  • padding : ์•ˆ์ชฝ ์—ฌ๋ฐฑ

โ—๏ธbox-sizing : border-box
padding์„ ์ด์šฉํ•  ๋•Œ ํ•„์ˆ˜๋กœ ์ ์šฉ๋˜์–ด์•ผํ•˜๋Š” ์†์„ฑ์ด๋‹ค.
์—ฌ๋ฐฑ + ํ…Œ๋‘๋ฆฌ ๋‘๊ป˜๊นŒ์ง€ ํฌํ•จํ•ด ์ปจํ…์ธ  ์˜์—ญ์„ ๊ณ„์‚ฐํ•œ๋‹ค.

๐Ÿ“CSS Selector

๋‚ด๊ฐ€ ์•Œ๊ณ  ์žˆ๋˜ ๋‚ด์šฉ ๋ง๊ณ ๋„ ์—ฌ๋Ÿฌ๊ฐ€์ง€์˜ Selector๋ฅผ ์•Œ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

๊ธฐ๋ณธ๊ตฌ์„ฑ

์„ ์–ธ {
	์†์„ฑ๋ช… : ์†์„ฑ๊ฐ’
}

โœ”๏ธ ์ „์ฒด (๋ฌธ์„œ์˜ ๋ชจ๋“  ์š”์†Œ์— ์ ์šฉ)

* {}

โœ”๏ธ Tag, ID, class Selector

Tag

๋™์ผํ•œ ํƒœ๊ทธ์ธ ๊ฒฝ์šฐ ๋ชจ๋‘ ์ ์šฉ ๋œ๋‹ค.(๋ณต์ˆ˜ ์ ์šฉ ๊ฐ€๋Šฅ)

h1 {}
div {}
span {}

id

#id๋กœ ์ž…๋ ฅํ•˜๋ฉฐ, ๊ณ ์œ ํ•œ ๊ฐ’์„ ๊ฐ€์ง„๋‹ค.

#only {} //only์ธ id๋ฅผ ๊ฐ€์ง„ ํ•˜๋‚˜๋งŒ ์ ์šฉ๋œ๋‹ค. ๋ณต์ˆ˜ ์ ์šฉx

class

.class๋กœ ์ž…๋ ฅํ•˜๋ฉฐ, ๊ฐ™์€ class ๋ช…์„ ๊ฐ€์ง„ ๋ชจ๋“  ์š”์†Œ๊ฐ€ ์ ์šฉ๋œ๋‹ค.

.center {} // center์ธ class๋ฅผ ๊ฐ€์ง„ ๋ชจ๋“  ์š”์†Œ๊ฐ€ ์ ์šฉ ๋œ๋‹ค.

โœ”๏ธ ์ž์‹, ํ›„์†, ํ˜•์ œ, ์ธ์ ‘ ํ˜•์ œ Selector

์ž์‹

์ฒซ๋ฒˆ์งธ ์ž…๋ ฅํ•œ ์š”์†Œ์˜ ๋ฐ”๋กœ ์•„๋ž˜ ์ž์‹์ธ ์š”์†Œ๋ฅผ ์„ ํƒ

header > p {}

ํ›„์†

์ฒซ๋ฒˆ์งธ๋กœ ์ž…๋ ฅํ•œ ํ›„์†์„ ์„ ํƒ

header  p {}

ํ˜•์ œ

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

header ~ p {}

์ธ์ ‘ ํ˜•์ œ

๊ฐ™์€ ๋ถ€๋ชจ ์š”์†Œ ๊ณต์œ , ์ฒซ๋ฒˆ์งธ ์ž…๋ ฅํ•œ ์š”์†Œ ๋ฐ”๋กœ ๋’ค ๋‘๋ฒˆ์งธ ์š”์†Œ ์„ ํƒ

header + p {}

โœ”๏ธ Attribute Selector

๊ฐ™์€ ์†์„ฑ์„ ๊ฐ€์ง„ ์š”์†Œ

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

โœ”๏ธ ๊ฐ€์ƒ ํด๋ž˜์Šค, UI ์š”์†Œ ์ƒํƒœ, ๊ตฌ์กฐ ๊ฐ€์ƒ ํด๋ž˜์Šค Selector

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

a:link //๋ฐฉ๋ฌธ ์ „
a:visited // ๋ฐฉ๋ฌธ ํ›„
a:hover // ๋งˆ์šฐ์Šค ์˜ค๋ฒ„
a:active // ํด๋ฆญ
a:focus // ํฌ์ปค์Šค 

UI ์š”์†Œ ์ƒํƒœ

input:checked + span // ์ฒดํฌ ์ƒํƒœ
input:enabled + span // ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ƒํƒœ
input:disabled + span // ์‚ฌ์šฉ ๋ถˆ๊ฐ€๋Šฅํ•œ ์ƒํƒœ

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

:first-child
:last-child
:first-of-type
:last-of-type
:nth-child()

โœ”๏ธ ๋ถ€์ • Selector

input:not([type="passward"]) {};
div:not[:nth-of-type(2)] {};

โœ”๏ธ ์ •ํ•ฉ์„ฑ Selector

input[type="text"]:void {};
input[type="text"]:invalid {};

โœ”๏ธ Check point

#main.center {}

๋„์–ด์“ฐ๊ธฐ ์—†์ด ์ž‘์„ฑํ•  ๊ฒฝ์šฐ id๊ฐ€ main์ด๋ฉด์„œ ๋™์‹œ์— class๊ฐ€ center์ธ element๋ฅผ ์„ ํƒํ•œ๋‹ค.


๐Ÿ“์ž๊ธฐ์†Œ๊ฐœ ํŽ˜์ด์ง€ ๋””์ž์ธ

โฌ‡๏ธ ์ด์ „ HTML ์š”์†Œ๋กœ๋งŒ ์ž‘์—…ํ•œ ํŽ˜์ด์ง€๋กœ ๋˜๊ฒŒ ํˆฌ๋ฐ•ํ•ด ๋ณด์˜€๊ณ  ์ •๋ ฌํ•˜๋Š”๋ฐ ํ•œ๊ณ„๊ฐ€ ์žˆ์—ˆ๋‹ค.

โฌ‡๏ธ CSS๋ฅผ ๋ฐฐ์šฐ๋ฉฐ ์ ์šฉ๊นŒ์ง€ํ•ด ์ƒ‰์ƒ, ์ •๋ ฌ, ๋ฐฐ์น˜ ๋“ฑ์„ ํ†ตํ•ด ๋‚ด๊ฐ€ ํ‘œํ˜„ ํ•˜๊ณ ์ž ํ•˜๋Š” ํ™”๋ฉด์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์—ˆ๋‹ค.


โœ๏ธ ๋งˆ์น˜๋ฉฐ

css๋ฅผ ๋‹ค์‹œ ๋ฐฐ์šฐ๋ฉด์„œ ๋‚ด๊ฐ€ ์•Œ์ง€๋ชปํ•œ ์š”์†Œ๋“ค์ด ๋งŽ์•˜๋‹ค. ์ƒ๋Œ€์  ๋‹จ์œ„, ๋ถ€์ • selector๋“ฑ์— ๋Œ€ํ•ด ์ž˜ ๋ชจ๋ฅด๊ณ  ์žˆ์—ˆ๋Š”๋ฐ ์ด๋ฒˆ ๊ธฐํšŒ๋ฅผ ํ†ตํ•ด ์ œ๋Œ€๋กœ ์•Œ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

๊นŠ๊ฒŒ ๋ฐฐ์šฐ๋‹ค ๋ณด๋ฉด grid,flex,:root, var()๋ฅผ ์‚ฌ์šฉํ•ด ์ข€ ๋” ํŽธ๋ฆฌํ•˜๊ฒŒ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ ์ด๋ถ€๋ถ„์— ๋Œ€ํ•ด ์ข€ ๋” ๊ณต๋ถ€ํ•ด ๋ด์•ผ๊ฒ ๋‹ค.

@media์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ด์„œ ์ดํ›„ ์ž๊ธฐ์†Œ๊ฐœ ํŽ˜์ด์ง€๋Š” ๋ฐ˜์‘ํ˜•์œผ๋กœ ์ž‘์—…ํ•  ๊ฒƒ์ด๋‹ค.

์ž๊ธฐ์†Œ๊ฐœ ํŽ˜์ด์ง€๋ฅผ ์ž‘์—…ํ•˜๋ฉด์„œ ๋‹ค๋ฅธ ์ˆ˜๊ฐ•์ƒ๋ถ„๋“ค์˜ ๊ฒฐ๊ณผ๋ฌผ๋„ ํ™•์ธํ•ด ๋ดค๋‹ค. ์ „์ฒด์ ์ธ ๋””์ž์ธ ์ž‘์—… ์—†์ด ์งง์€ ์‹œ๊ฐ„์— ๋„ˆ๋ฌด ์ข‹์€ ์•„์ด๋””์–ด๋กœ ์ž‘์—…ํ•˜์‹  ๋ถ„๋“ค์ด ๋งŽ์œผ์…จ๋‹ค. ์ด๋ถ€๋ถ„์—์„œ ์—ฌ๋Ÿฌ ๋ ˆํผ๋Ÿฐ์Šค๋ฅผ ์ฐพ์•„ ๋ด์•ผ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๊ณ  ๋‚˜์ค‘์— ๋ดค๋˜ ์Šคํƒ€์ผ์„ ์ ์šฉ๊นŒ์ง€ ํ•ด๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ธฐํšŒ๋ฅผ ๊ฐ€์ ธ์•ผ๊ฒ ๋‹ค.

๐Ÿ“Œ css ๊ณต๋ถ€ํ•  ๋•Œ ์ฐธ๊ณ ํ•˜๊ธฐ ์ข‹์€ ์‚ฌ์ดํŠธ

๐Ÿ”— https://developer.mozilla.org/ko/docs/Web/CSS/Attribute_selectors
๐Ÿ”— https://www.nextree.co.kr/p8468/

profile
๐Ÿ’ป ํ”„๋ก ํŠธ์—”๋“œ๋ฅผ ๋ชฉํ‘œ๋กœ ์„ฑ์žฅ ์ค‘! (์•Œ์•„๋ดค๋˜ ๋‚ด์šฉ ๋“ฑ์„ ์ •๋ฆฌํ•˜๊ธฐ)

0๊ฐœ์˜ ๋Œ“๊ธ€