Guider/Frontend/FrontendDevGuide0003
Frontend#03

FrontendDevGuide0003

CSS μ™„μ „ 정볡

🎨 FrontendDevGuide0003 — CSS μ™„μ „ 정볡 A-Z

 

πŸ’‘ 이 글을 읽고 λ‚˜λ©΄...
CSS κΈ°λ³Έ 문법뢀터 μ„ νƒμž, λ°•μŠ€ λͺ¨λΈ, Flexbox, Grid, λ°˜μ‘ν˜• λ””μžμΈ, μ• λ‹ˆλ©”μ΄μ…˜, CSS λ³€μˆ˜κΉŒμ§€ —
ν˜„μ—…μ—μ„œ CSSλ₯Ό μžμ‹  있게 μž‘μ„±ν•  수 μžˆλŠ” μˆ˜μ€€μ΄ λ©λ‹ˆλ‹€!

 

πŸ“Œ μ˜ˆμƒ ν•™μŠ΅ κΈ°κ°„: 2~3μ£Ό  |  λ‚œμ΄λ„: β­β­β­β˜†β˜†  |  μ„ μˆ˜ 지식: HTML 기초 (Guide0002)

 


🎨 1. CSSλž€? — μ›Ήμ˜ ν™”μž₯사

CSS(Cascading Style Sheets)λŠ” HTML둜 λ§Œλ“  λΌˆλŒ€μ— 색, 크기, 배치, μ• λ‹ˆλ©”μ΄μ…˜μ„ μž…νžˆλŠ” μ–Έμ–΄μž…λ‹ˆλ‹€.
"Cascading"μ΄λΌλŠ” μ΄λ¦„μ²˜λŸΌ, μŠ€νƒ€μΌμ΄ μœ„μ—μ„œ μ•„λž˜λ‘œ ν˜λŸ¬λ‚΄λ € μ μš©λ©λ‹ˆλ‹€.

 

🏠 μ§‘μœΌλ‘œ λΉ„μœ ν•˜λ©΄:
HTML = 건물 골쑰 (λΌˆλŒ€)  |  CSS = μΈν…Œλ¦¬μ–΄ (λ²½μ§€, 페인트, 가ꡬ 배치)  |  JS = μ „κΈ°·κΈ°λŠ₯

 

πŸ“„ CSSλ₯Ό HTML에 μ—°κ²°ν•˜λŠ” 3κ°€μ§€ 방법:
β‘  μ™ΈλΆ€ 파일 (ꢌμž₯) — <link rel="stylesheet" href="style.css">
β‘‘ λ‚΄λΆ€ μŠ€νƒ€μΌ — <style> νƒœκ·Έ μ•ˆμ— μž‘μ„± (html 파일 λ‚΄)
β‘’ 인라인 μŠ€νƒ€μΌ — <h1 style="color:red"> (μœ μ§€λ³΄μˆ˜ νž˜λ“€μ–΄ λΉ„κΆŒμž₯)
→ μ‹€λ¬΄μ—μ„œλŠ” 항상 μ™ΈλΆ€ 파일(β‘ )둜 λΆ„λ¦¬ν•΄μ„œ κ΄€λ¦¬ν•©λ‹ˆλ‹€!

 


πŸ“ 2. CSS κΈ°λ³Έ 문법 — 3κ°€μ§€λ§Œ κΈ°μ–΅ν•˜λ©΄ λœλ‹€

 

CSS κΈ°λ³Έ 문법 ꡬ쑰

 

πŸ“Œ CSS λ‹¨μœ„(Unit) μ™„μ „ 정리:
px — κ³ μ • ν”½μ…€ (1px = ν™”λ©΄ 1ν”½μ…€)
% — λΆ€λͺ¨ μš”μ†Œ λŒ€λΉ„ λΉ„μœ¨ (width: 50% → λΆ€λͺ¨μ˜ 절반)
em — λΆ€λͺ¨ 폰트 크기 κΈ°μ€€ (1em = λΆ€λͺ¨ font-size)
rem — 루트(html) 폰트 크기 κΈ°μ€€ → λ°˜μ‘ν˜•μ—μ„œ κ°€μž₯ μ•ˆμ „
vw/vh — 뷰포트(ν™”λ©΄) λ„ˆλΉ„/높이 κΈ°μ€€ (100vw = ν™”λ©΄ 전체 λ„ˆλΉ„)
fr — Gridμ—μ„œλ§Œ μ‚¬μš©ν•˜λŠ” λΉ„μœ¨ λ‹¨μœ„ (1fr 1fr = 1:1 λΉ„μœ¨)
→ 싀무 μΆ”μ²œ: px(κ³ μ •) + rem(ν…μŠ€νŠΈ) + %(λ ˆμ΄μ•„μ›ƒ) + vw/vh(전체 ν™”λ©΄)

 


🎯 3. CSS μ„ νƒμž — μ •ν™•νžˆ μŠ€νƒ€μΌμ„ μ μš©ν•˜λŠ” 기술

μ„ νƒμžλŠ” "μ–΄λ–€ μš”μ†Œμ— μŠ€νƒ€μΌμ„ μ μš©ν• μ§€" μ§€μ •ν•˜λŠ” νŒ¨ν„΄μž…λ‹ˆλ‹€.
μ„ νƒμžλ₯Ό 잘 μ•Œλ©΄ λΆˆν•„μš”ν•œ class μΆ”κ°€ 없이도 μ›ν•˜λŠ” μš”μ†Œλ§Œ μ •ν™•νžˆ μŠ€νƒ€μΌλ§ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

CSS μ„ νƒμž μ™„μ „ 정리 λ„ν‘œ

 

πŸ”₯ 자주 μ“°λŠ” 가상 클래슀(Pseudo-class) μ„ νƒμž:
:hover — 마우슀λ₯Ό μ˜¬λ Έμ„ λ•Œ
:focus — ν¬μ»€μŠ€κ°€ μž‘ν˜”μ„ λ•Œ (input 클릭 μ‹œ)
:active — ν΄λ¦­ν•˜κ³  μžˆλŠ” μˆœκ°„
:nth-child(n) — n번째 μžμ‹ μš”μ†Œ (2n = 짝수, 2n+1 = ν™€μˆ˜)
:first-child / :last-child — 첫 번째 / λ§ˆμ§€λ§‰ μžμ‹
:not(.active) — .activeκ°€ μ•„λ‹Œ μš”μ†Œ

 

⚠️ CSS μš°μ„ μˆœμœ„(Specificity) 법칙:
인라인 style > #id > .class > νƒœκ·Έ μ„ νƒμž
같은 μš°μ„ μˆœμœ„λ©΄ λ‚˜μ€‘μ— μž‘μ„±λœ 것이 μ μš©λ©λ‹ˆλ‹€ (Cascade!)
!importantλŠ” λͺ¨λ“  μš°μ„ μˆœμœ„λ₯Ό λ¬΄μ‹œ — λ‚¨μš©ν•˜λ©΄ μœ μ§€λ³΄μˆ˜ μ§€μ˜₯!

 


πŸ“¦ 4. λ°•μŠ€ λͺ¨λΈ — CSS λ ˆμ΄μ•„μ›ƒμ˜ 핡심

HTML의 λͺ¨λ“  μš”μ†ŒλŠ” λ°•μŠ€(Box) ν˜•νƒœλ‘œ κ΅¬μ„±λ©λ‹ˆλ‹€.
λ°•μŠ€ λͺ¨λΈμ„ μ΄ν•΄ν•˜λ©΄ μ—¬λ°± μ‘°μ •, 크기 계산이 훨씬 μ‰¬μ›Œμ§‘λ‹ˆλ‹€.

 

CSS λ°•μŠ€ λͺ¨λΈ μ™„μ „ ν•΄λΆ€

 

πŸ’‘ box-sizing: border-box — 싀무 ν•„μˆ˜ μ„€μ •!
κΈ°λ³Έκ°’(content-box)은 width에 paddingκ³Ό borderκ°€ ν¬ν•¨λ˜μ§€ μ•Šμ•„μ„œ 크기 계산이 λ³΅μž‘ν•©λ‹ˆλ‹€.
μ•„λž˜ μ½”λ“œλ₯Ό CSS 파일 μ΅œμƒλ‹¨μ— 항상 μΆ”κ°€ν•˜μ„Έμš”:
*, *::before, *::after { box-sizing: border-box; }
→ 이제 width: 200px → padding/border 포함 200px (직관적!)

 

πŸ“ margin 단좕 ν‘œκΈ°λ²•:
margin: 10px; → 4λ°©ν–₯ λͺ¨λ‘ 10px
margin: 10px 20px; → μƒν•˜ 10px, 쒌우 20px
margin: 10px 20px 30px 40px; → 상 우 ν•˜ 쒌 (μ‹œκ³„λ°©ν–₯)
margin: 0 auto; → 쒌우 auto = κ°€μš΄λ° μ •λ ¬ (κ°€μž₯ 많이 μ“°λŠ” νŒ¨ν„΄!)

 


🎨 5. 색상과 λ°°κ²½ — λ””μžμΈμ˜ κΈ°λ³Έ

 

🎨 CSS 색상 ν‘œν˜„ 방법:
이름 — color: red; color: blue; (μ•½ 140개 색상λͺ…)
HEX — color: #ff6b6b; (16μ§„μˆ˜, κ°€μž₯ 많이 μ‚¬μš©)
RGB — color: rgb(255, 107, 107);
RGBA — color: rgba(255, 107, 107, 0.5); (투λͺ…도 0~1)
HSL — color: hsl(0, 100%, 71%); (색상각도, 채도, 밝기)
→ μ‹€λ¬΄μ—μ„œλŠ” HEX(#)와 RGBAλ₯Ό κ°€μž₯ 많이 μ”λ‹ˆλ‹€

 

🌈 Gradient(κ·ΈλΌλ””μ–ΈνŠΈ) — μ„Έλ ¨λœ λ°°κ²½ λ§Œλ“€κΈ°:
μ„ ν˜•: background: linear-gradient(135deg, #667eea, #764ba2);
λ°©μ‚¬ν˜•: background: radial-gradient(circle, #f093fb, #f5576c);
→ gradients.app, uigradients.comμ—μ„œ 예쁜 κ·ΈλΌλ””μ–ΈνŠΈ μ½”λ“œλ₯Ό 무료둜 κ°€μ Έμ˜¬ 수 μžˆμ–΄μš”!

 


🧱 6. Flexbox — 1차원 λ ˆμ΄μ•„μ›ƒμ˜ μ™•

FlexboxλŠ” μš”μ†Œλ“€μ„ κ°€λ‘œ λ˜λŠ” μ„Έλ‘œ ν•œ λ°©ν–₯으둜 μœ μ—°ν•˜κ²Œ λ°°μΉ˜ν•˜λŠ” ν˜„λŒ€μ  CSS λ ˆμ΄μ•„μ›ƒ μ‹œμŠ€ν…œμž…λ‹ˆλ‹€.
λ„€λΉ„κ²Œμ΄μ…˜ λ°”, μΉ΄λ“œ 배치, λ²„νŠΌ κ·Έλ£Ή λ“± λŒ€λΆ€λΆ„μ˜ 1차원 λ ˆμ΄μ•„μ›ƒμ— μ‚¬μš©ν•©λ‹ˆλ‹€.

 

Flexbox justify-content μ‹œκ°ν™” λ„ν‘œ

 

πŸ“‹ Flexbox 핡심 속성 총정리:
[μ»¨ν…Œμ΄λ„ˆμ— 적용]
display: flex — Flexbox ν™œμ„±ν™”
flex-direction: row(κΈ°λ³Έ) / column — λ°©ν–₯ μ„€μ •
flex-wrap: nowrap / wrap — 쀄 λ°”κΏˆ μ—¬λΆ€
justify-content — μ£ΌμΆ•(κΈ°λ³Έ:κ°€λ‘œ) μ •λ ¬
align-items — ꡐ차좕(κΈ°λ³Έ:μ„Έλ‘œ) μ •λ ¬
gap: 16px — μ•„μ΄ν…œ 사이 간격 (margin λŒ€μ‹  μ‚¬μš© ꢌμž₯)

[μ•„μ΄ν…œμ— 적용]
flex: 1 — 남은 곡간을 κ· λ“±ν•˜κ²Œ μ°¨μ§€
flex: 0 0 200px — κ³ μ • 크기 200px
align-self: center — κ°œλ³„ μ•„μ΄ν…œλ§Œ μ„Έλ‘œ μ •λ ¬ λ³€κ²½
order: 1 — μˆœμ„œ λ³€κ²½ (μž‘μ€ μˆ«μžκ°€ λ¨Όμ €)

 

⭐ μ™„λ²½ν•œ 수직/μˆ˜ν‰ κ°€μš΄λ° μ •λ ¬ (κ°€μž₯ 많이 κ²€μƒ‰ν•˜λŠ” CSS!):
.container { display: flex; justify-content: center; align-items: center; }

 


πŸ”² 7. CSS Grid — 2차원 λ ˆμ΄μ•„μ›ƒ λ§ˆμŠ€ν„°

CSS GridλŠ” ν–‰(row)κ³Ό μ—΄(column)을 λ™μ‹œμ— μ œμ–΄ν•˜λŠ” 2차원 λ ˆμ΄μ•„μ›ƒ μ‹œμŠ€ν…œμž…λ‹ˆλ‹€.
λ³΅μž‘ν•œ νŽ˜μ΄μ§€ 전체 λ ˆμ΄μ•„μ›ƒ(header/sidebar/main/footer)에 특히 κ°•λ ₯ν•©λ‹ˆλ‹€.

 

CSS Grid λ ˆμ΄μ•„μ›ƒ λ„ν‘œ

 

πŸ“‹ Grid 핡심 속성:
display: grid — Grid ν™œμ„±ν™”
grid-template-columns: 1fr 1fr 1fr — 3μ—΄ κ· λ“± λΆ„ν• 
grid-template-columns: 200px 1fr — 첫 μ—΄ κ³ μ • + λ‚˜λ¨Έμ§€ μžλ™
grid-template-columns: repeat(3, 1fr) — repeat()둜 κ°„κ²°ν•˜κ²Œ
gap: 20px — ν–‰/μ—΄ 간격
grid-column: 1 / span 2 — 1번 μ—΄λΆ€ν„° 2μΉΈ μ°¨μ§€
grid-template-areas — μ΄λ¦„μœΌλ‘œ 배치 (직관적!)

 


πŸ“ 8. Position — μš”μ†Œ μœ„μΉ˜ μ™„μ „ 정볡

position 속성은 μš”μ†Œλ₯Ό 일반 νλ¦„μ—μ„œ λ²—μ–΄λ‚˜ μ›ν•˜λŠ” μœ„μΉ˜μ— λ°°μΉ˜ν•  λ•Œ μ‚¬μš©ν•©λ‹ˆλ‹€.
λͺ¨λ‹¬, λ“œλ‘­λ‹€μš΄, 툴팁, κ³ μ • 헀더 등을 λ§Œλ“€ λ•Œ ν•„μˆ˜μž…λ‹ˆλ‹€.

 

position 5κ°€μ§€ κ°’ μ™„μ „ 정리:
static (κΈ°λ³Έκ°’) — 일반 νλ¦„λŒ€λ‘œ 배치, top/left λ¬΄μ‹œ
relative — 자기 μžμ‹ μ˜ μ›λž˜ μœ„μΉ˜ κΈ°μ€€μœΌλ‘œ 이동 (곡간은 μœ μ§€)
absolute — κ°€μž₯ κ°€κΉŒμš΄ relative λΆ€λͺ¨ κΈ°μ€€ μ ˆλŒ€ μœ„μΉ˜ (곡간 μ°¨μ§€ μ•ˆ 함)
fixed — λΈŒλΌμš°μ € ν™”λ©΄(뷰포트) κΈ°μ€€ κ³ μ • (μŠ€ν¬λ‘€ν•΄λ„ μ•ˆ μ›€μ§μž„)
sticky — 슀크둀 μ „μ—” relative, μž„κ³„μ  μ§€λ‚˜λ©΄ fixed처럼 λ™μž‘ (헀더에 많이 μ‚¬μš©)

 

πŸ’‘ absolute μ‚¬μš© νŒ¨ν„΄ (κ°€μž₯ 많이 μ“°λŠ” ν˜•νƒœ):
λΆ€λͺ¨μ— position: relative μ„€μ • → μžμ‹μ— position: absolute μ‚¬μš©
→ λΆ€λͺ¨ μ•ˆμ—μ„œ μ›ν•˜λŠ” μœ„μΉ˜λ‘œ 자유둭게 배치 κ°€λŠ₯!

 


πŸ“± 9. λ°˜μ‘ν˜• λ””μžμΈ — λͺ¨λ“  ν™”λ©΄μ—μ„œ μ™„λ²½ν•˜κ²Œ

λ°˜μ‘ν˜• λ””μžμΈ(Responsive Design)은 ν™”λ©΄ 크기에 따라 λ ˆμ΄μ•„μ›ƒμ΄ μžλ™μœΌλ‘œ μ‘°μ ˆλ˜λŠ” κ²ƒμž…λ‹ˆλ‹€.
ν˜„μž¬ λͺ¨λ°”일 νŠΈλž˜ν”½μ΄ 50% 이상인 만큼, λ°˜μ‘ν˜•μ€ 선택이 μ•„λ‹Œ ν•„μˆ˜μž…λ‹ˆλ‹€!

 

λ°˜μ‘ν˜• λ””μžμΈ 브레이크포인트 λ„ν‘œ

 

πŸ“± Media Query μ‚¬μš©λ²•:
/* 767px μ΄ν•˜: λͺ¨λ°”일 */
@media (max-width: 767px) { .container { flex-direction: column; } }

/* 768px ~ 1023px: νƒœλΈ”λ¦Ώ */
@media (min-width: 768px) and (max-width: 1023px) { .grid { grid-template-columns: 1fr 1fr; } }

/* 1024px 이상: λ°μŠ€ν¬ν†± */
@media (min-width: 1024px) { .grid { grid-template-columns: repeat(3, 1fr); } }

 

πŸ“± Mobile First vs Desktop First:
Mobile First — λͺ¨λ°”일 κΈ°λ³Έ, min-width둜 ν™•μž₯ (Google ꢌμž₯ 방식)
Desktop First — λ°μŠ€ν¬ν†± κΈ°λ³Έ, max-width둜 μΆ•μ†Œ (κΈ°μ‘΄ 방식)
→ ν˜„μ—…μ—μ„œλŠ” Mobile Firstκ°€ ν‘œμ€€μž…λ‹ˆλ‹€!

 


✨ 10. CSS νŠΈλžœμ§€μ…˜ & μ• λ‹ˆλ©”μ΄μ…˜

CSSλ§ŒμœΌλ‘œλ„ λΆ€λ“œλŸ¬μš΄ μ• λ‹ˆλ©”μ΄μ…˜ 효과λ₯Ό 쀄 수 μžˆμŠ΅λ‹ˆλ‹€. JS 없이!

 

🌊 transition — μƒνƒœ λ³€ν™”λ₯Ό λΆ€λ“œλŸ½κ²Œ:
.btn { background: blue; transition: all 0.3s ease; }
.btn:hover { background: darkblue; transform: scale(1.05); }
→ 마우슀 올리면 0.3μ΄ˆμ— 걸쳐 λΆ€λ“œλŸ½κ²Œ 색상 + 크기 λ³€ν™”!

transition 단좕 ν‘œκΈ°: transition: [속성] [μ‹œκ°„] [νƒ€μ΄λ°ν•¨μˆ˜]
타이밍 ν•¨μˆ˜: ease(κΈ°λ³Έ) / linear / ease-in / ease-out / ease-in-out

 

🎬 animation + keyframes — 반볡/볡작 μ• λ‹ˆλ©”μ΄μ…˜:
@keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }
.box { animation: fadeIn 1s ease-in-out; }

animation 속성: 이름 / μ‹œκ°„ / 타이밍 / λ”œλ ˆμ΄ / 반볡횟수(infinite) / λ°©ν–₯

 

πŸ”„ transform — λ³€ν˜• 효과:
transform: scale(1.1) — 110%둜 ν™•λŒ€
transform: rotate(45deg) — 45도 νšŒμ „
transform: translateX(20px) — 였λ₯Έμͺ½μœΌλ‘œ 20px 이동
transform: translateY(-50%) — μ„Έλ‘œ 50% μœ„λ‘œ 이동 (κ°€μš΄λ° 정렬에 ν™œμš©!)

 


🎨 11. μ‹€λ¬΄μ—μ„œ 자주 μ“°λŠ” CSS 속성 총정리

 

CSS μ£Όμš” 속성 총정리 λ„ν‘œ

 


πŸ”§ 12. CSS λ³€μˆ˜(Custom Properties) — ν˜„μ—… ν•„μˆ˜

CSS λ³€μˆ˜λ₯Ό μ“°λ©΄ 색상, 폰트 크기 등을 ν•œ κ³³μ—μ„œ 관리할 수 μžˆμŠ΅λ‹ˆλ‹€. μ‹€λ¬΄μ—μ„œ λ””μžμΈ μ‹œμŠ€ν…œμ˜ κΈ°λ°˜μž…λ‹ˆλ‹€.

 

CSS λ³€μˆ˜ μ‚¬μš©λ²•:
/* λ³€μˆ˜ μ •μ˜ (μ „μ—­) */
:root { --primary: #667eea; --secondary: #764ba2; --font-size-base: 16px; --radius: 8px; }

/* λ³€μˆ˜ μ‚¬μš© */
.btn { background: var(--primary); border-radius: var(--radius); }
.title { font-size: var(--font-size-base); color: var(--secondary); }

→ λ‚˜μ€‘μ— λΈŒλžœλ“œ 색상이 λ°”λ€Œλ©΄ :root ν•œ 곳만 μˆ˜μ •ν•˜λ©΄ 끝!

 


πŸ—οΈ 13. ν˜„μ—… CSS μ•„ν‚€ν…μ²˜ — BEM 방법둠

νŒ€ ν˜‘μ—…μ—μ„œ CSS 클래슀 이름이 μΆ©λŒν•˜κ±°λ‚˜ 의미λ₯Ό μ•Œ 수 μ—†μœΌλ©΄ μœ μ§€λ³΄μˆ˜κ°€ νž˜λ“€μ–΄μ§‘λ‹ˆλ‹€. BEM은 이 문제λ₯Ό ν•΄κ²°ν•˜λŠ” 넀이밍 κ·œμΉ™μž…λ‹ˆλ‹€.

 

🧩 BEM(Block-Element-Modifier) 넀이밍:
Block — 독립적인 μ»΄ν¬λ„ŒνŠΈ: .card, .button, .header
Element — λΈ”λ‘μ˜ ꡬ성 μš”μ†Œ: .card__title, .card__image
Modifier — λ³€ν˜•/μƒνƒœ: .button--primary, .card--featured

μ˜ˆμ‹œ: <div class="card card--featured"><h2 class="card__title">...</h2></div>
→ 클래슀 μ΄λ¦„λ§Œ 보고도 ꡬ쑰와 역할을 νŒŒμ•…ν•  수 μžˆμŠ΅λ‹ˆλ‹€!

 

πŸ› οΈ CSS 방법둠 비ꡐ:
BEM — κ°€μž₯ 많이 μ“°μ΄λŠ” 넀이밍 κ·œμΉ™ (λŒ€ν˜• ν”„λ‘œμ νŠΈμ— 적합)
SCSS/SASS — CSSλ₯Ό λ³€μˆ˜, 쀑첩, 믹슀인으둜 ν™•μž₯ν•œ μ „μ²˜λ¦¬κΈ°
CSS Module — 파일 λ‹¨μœ„ μŠ€μ½”ν”„ (Reactμ—μ„œ 많이 μ‚¬μš©)
Tailwind CSS — μœ ν‹Έλ¦¬ν‹° 클래슀 방식 (졜근 κ°€μž₯ νŠΈλ Œλ””)

 


βœ… 핡심 μš”μ•½ & ν•™μŠ΅ 체크리슀트

 

"CSSλŠ” μ™Έμ›Œμ„œ ν•˜λŠ” 게 μ•„λ‹™λ‹ˆλ‹€. 원리λ₯Ό μ΄ν•΄ν•˜κ³ , 많이 λ§Œλ“€μ–΄λ³΄λ©΄μ„œ 손에 μ΅νžˆλŠ” κ²ƒμž…λ‹ˆλ‹€.
λ³΅μž‘ν•œ λ ˆμ΄μ•„μ›ƒλ„ κ²°κ΅­ λ°•μŠ€ + Flexbox + Grid μ‘°ν•©μž…λ‹ˆλ‹€."

 

πŸ“‹ ν•™μŠ΅ μ™„λ£Œ 체크리슀트:
☐ CSS κΈ°λ³Έ 문법(μ„ νƒμž, 속성, κ°’)을 μ΄ν•΄ν–ˆλ‹€
☐ px, %, rem, vw λ‹¨μœ„μ˜ 차이λ₯Ό μ•ˆλ‹€
☐ μ„ νƒμž μš°μ„ μˆœμœ„(specificity)λ₯Ό μ„€λͺ…ν•  수 μžˆλ‹€
☐ λ°•μŠ€ λͺ¨λΈ(margin/border/padding/content)을 그릴 수 μžˆλ‹€
☐ box-sizing: border-box의 의미λ₯Ό μ•ˆλ‹€
☐ Flexbox둜 수직/μˆ˜ν‰ κ°€μš΄λ° 정렬을 ν•  수 μžˆλ‹€
☐ Grid둜 3μ—΄ λ ˆμ΄μ•„μ›ƒμ„ λ§Œλ“€ 수 μžˆλ‹€
☐ position(relative/absolute/fixed)의 차이λ₯Ό μ•ˆλ‹€
☐ Media Query둜 λͺ¨λ°”일/λ°μŠ€ν¬ν†± λΆ„κΈ°λ₯Ό ν•  수 μžˆλ‹€
☐ transition으둜 hover μ• λ‹ˆλ©”μ΄μ…˜μ„ λ§Œλ“€μ—ˆλ‹€
☐ CSS λ³€μˆ˜(:root, var())λ₯Ό μ‚¬μš©ν•΄λ΄€λ‹€
☐ BEM 넀이밍 κ·œμΉ™μ„ μ μš©ν•΄λ΄€λ‹€

 

πŸŽ‰ λ‹€μŒ 단계: FrontendDevGuide0004 — JavaScript 기초 둜 λ„˜μ–΄κ°€μ„Έμš”!
HTML/CSS둜 λ©‹μ§„ 화면을 λ§Œλ“€μ—ˆμœΌλ‹ˆ, 이제 λ™μž‘μ„ μΆ”κ°€ν•  μ°¨λ‘€μž…λ‹ˆλ‹€ ⚑

 

λ°˜μ‘ν˜•