๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ’ป DEV83

[Tailwind CSS] 17. sticky top-0 & backdrop-blur ์š”์•ฝ 1. ํ•™์Šต๋‚ด์šฉ : sticky top-0 2. ํ•™์Šต๋‚ด์šฉ : backdrop-blur์ƒ์„ธ 1. ํ•™์Šต๋‚ด์šฉ : sticky top-0 โ—ผ๏ธŽ sticky top-0 ์ •์˜- position: sticky : ์Šคํฌ๋กค ์œ„์น˜์— ๋”ฐ๋ผ ์š”์†Œ๊ฐ€ ํ˜๋Ÿฌ๊ฐ€๋‹ค๊ฐ€ ํŠน์ • ์ž„๊ณ„์ ์— ๋„๋‹ฌํ•˜๋ฉด ๊ณ ์ •(sticky)๋˜๋Š” css- relative์™€ fixed ์‚ฌ์ด์˜ ์„ฑ๊ฒฉ : ๋ถ€๋ชจ ์ปจํ…Œ์ด๋„ˆ ์˜์—ญ ๋‚ด์—์„œ๋งŒ ๊ณ ์ •sticky top-n : top-0 / top-4 / top-1/2 ๋“ฑ โ—ผ๏ธŽ sticky top-0 ์šฉ๋ฒ•return ( ใ„ฑใ„ดใ„ทใ„นใ… ํ™ˆ ); - hea.. 2025. 6. 19.
[Tailwind CSS] 16. clsx ์‚ฌ์šฉํ•˜๊ธฐ ์š”์•ฝ 1. ํ•™์Šต๋‚ด์šฉ : clsx ์‚ฌ์šฉํ•˜๊ธฐ์ƒ์„ธ 1. ํ•™์Šต๋‚ด์šฉ : clsx ์‚ฌ์šฉํ•˜๊ธฐ โ—ผ๏ธŽ clsx ์ •์˜- clsx๋Š” ๊ฒฝ๋Ÿ‰ className ์œ ํ‹ธ๋ฆฌํ‹ฐ์ด๋‹ค.- ์กฐ๊ฑด๋ถ€๋กœ ํด๋ž˜์Šค ๋ฌธ์ž์—ด์„ ํ•ฉ์น˜๊ฑฐ๋‚˜, fasly ๊ฐ’(false, null, undefined, 0, "")์„ ์ž๋™์œผ๋กœ ๊ฑธ๋Ÿฌ์ฃผ๋Š” ๊ฒฝ๋Ÿ‰ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค. โ—ผ๏ธŽ clsx ํŠน์ง•- clsx๋Š” ์ œ๋กœ ์˜์กด(zero-dependency), ๋ฒˆ๋“ค ํฌ๊ธฐ ์•ฝ 200B(์ตœ์†Œํ™”์‹œ) โ—ผ๏ธŽ clsx ์„ค์น˜# npmnpm install clsx โ—ผ๏ธŽ clsx ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•import clsx from 'clsx';function Button({ isPrimary, isDisabled }: { isPrimary: boolean; isDisabled?: boolean }) { ret.. 2025. 6. 19.
[Tailwind CSS] 15. flex flex-col items-center ์š”์•ฝ 1. ํ•™์Šต๋‚ด์šฉ : flex flex-col (+ items-center)์ƒ์„ธ 1. ํ•™์Šต๋‚ด์šฉ : flex flex-col (+ items-center) โ—ผ๏ธŽflex flex-col- flex ๊ธฐ๋ณธ์€ direction์„ ๊ฐ€๋กœ๋กœ ํ•ด์ค€๋‹ค. → ๊ธฐ๋ณธ์ ์œผ๋กœ flex flex-row ์˜ ๊ธฐ๋Šฅ์„ ํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์—.- flex flex-col → direction์„ ์„ธ๋กœ๋กœ ํ•ด์ค€๋‹ค.- flex flex-col + items-center → ์ˆ˜ํ‰์ •๋ ฌ!(๋ณดํ†ต justify-center๋ฅผ ์“ฐ์ง€๋งŒ flex-col์˜ ๊ฒฝ์šฐ์—๋Š” ๋ฐ˜๋Œ€๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค!) 2025. 6. 18.
[Tailwind CSS] 14. DarkMode (๋‹คํฌ๋ชจ๋“œ) ๋‹คํฌ๋ชจ๋“œ๋Š” ํ˜„๋Œ€ ์šด์˜์ฒด์ œ์—์„  ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ์ด๋‹ค.๋”์šฑ์ด Light, Dark, System ๋ชจ๋“œ๋กœ ์ œ๊ณตํ•œ๋‹ค. ์š”์•ฝ 1. ํ•™์Šต๋‚ด์šฉ : DarkMode (๋‹คํฌ๋ชจ๋“œ)์ƒ์„ธ 1. ํ•™์Šต๋‚ด์šฉ : DarkMode (๋‹คํฌ๋ชจ๋“œ) โ—ผ๏ธŽDarkMode ์˜ˆ์ œ- ๊ธฐ๋ณธ ์ „๋žต : ์šด์˜์ฒด์ œ ์„ ํ˜ธ๋„ ์‚ฌ์šฉ (media)Tailwind๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์šด์˜ ์ฒด์ œ์˜ ๋‹คํฌ ๋ชจ๋“œ ์„ ํ˜ธ๋„์— ๋”ฐ๋ผ ์Šคํƒ€์ผ์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด CSS์˜ prefers-color-scheme ๋ฏธ๋””์–ด ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ณ„๋„์˜ ์„ค์ • ์—†์ด Tailwind์—์„œ ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. - ์„ ํƒ์ž ์ „๋žต : ์ˆ˜๋™์œผ๋กœ ๋‹คํฌ ๋ชจ๋“œ ์ „ํ™˜ (selector)// tailwind.config.jsmodule.exports = { darkMode: 'selector'.. 2025. 6. 13.
[Tailwind CSS] 13. Animation (์• ๋‹ˆ๋ฉ”์ด์…˜) ์š”์•ฝ 1. ํ•™์Šต๋‚ด์šฉ : Animation (์• ๋‹ˆ๋ฉ”์ด์…˜) 2. ํ•™์Šต๋‚ด์šฉ : Next.js์˜ SSR - Client components ์ƒ์„ธ 1. ํ•™์Šต๋‚ด์šฉ : Animation (์• ๋‹ˆ๋ฉ”์ด์…˜) โ—ผ๏ธŽAnimation ์ •์˜- ์• ๋‹ˆ๋ฉ”์ด์…˜์€ ์š”์†Œ๊ฐ€ ์‹œ๊ฐ์ ์œผ๋กœ ์›€์ง์ด๊ฑฐ๋‚˜ ๋ณ€ํ™”ํ•˜๋Š” ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.- Tailwind CSS์—์„œ๋Š” ๋‹ค์–‘ํ•œ ๋‚ด์žฅ ์• ๋‹ˆ๋ฉ”์ด์…˜ Utility๋ฅผ ์ œ๊ณตํ•˜๊ณ , ์‰ฝ๊ณ  ๋น ๋ฅด๊ฒŒ ์ ์šฉ ๊ฐ€๋Šฅ โ—ผ๏ธŽ Utility classanimate-spin : ์š”์†Œ๊ฐ€ ๊ณ„์†ํ•ด์„œ ํšŒ์ „ (Loading Indicator์— ์œ ์šฉ)animate-bounce : ์š”์†Œ๊ฐ€ ๊ณ„์†ํ•ด์„œ ์œ„์•„๋ž˜๋กœ ํŠ€๋Š” ํšจ๊ณผ (Scroll-Down ํ‘œ์‹œ ๋“ฑ์— ์œ ์šฉ) animate-pulse : ์š”์†Œ๊ฐ€ ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ์‚ฌ๋ผ์ง€๊ณ  ๋‚˜ํƒ€๋‚˜๋Š” ํšจ๊ณผ (Loading Ske.. 2025. 6. 13.
[Tailwind CSS] 12. Transition (ํŠธ๋žœ์ง€์…˜) ์š”์•ฝ 1. ํ•™์Šต๋‚ด์šฉ : Transition (ํŠธ๋žœ์ง€์…˜)์ƒ์„ธ 1. ํ•™์Šต๋‚ด์šฉ : Transition โ—ผ๏ธŽTransition ์ •์˜- Transition์€ CSS์—์„œ ์š”์†Œ๊ฐ€ ์ƒํƒœ(๊ฐ’)์„ ๋ณ€๊ฒฝํ•  ๋•Œ, ๊ทธ ๋ณ€ํ™”๋ฅผ ์ผ์ • ์‹œ๊ฐ„ ๋™์•ˆ ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜ โ—ผ๏ธŽTransition ์˜ˆ์ œ- Transition์€ hover์™€ ๊ฐ™์ด ์š”์†Œ ์ƒํƒœ(๊ฐ’)์„ ๋ณ€๊ฒฝํ–ˆ์„ ๋•Œ, ๋ณ€ํ™”๋ฅผ ์ค€๋‹ค! ( transition / duration-123(ms) )// transition duration-500 ์˜ ์ฐจ์ด!export default function Transition() { return ( {/* Transition ๋ฏธ์ ์šฉ */} Hover me .. 2025. 6. 13.
[Tailwind CSS] 11. Responsive(2) ๋ชจ๋ฐ”์ผ ์šฐ์„ (Mobile-First) ์„ค๊ณ„ ๋ฐฉ์‹์„ ์ดํ•ดํ•˜๊ณ , ์›นํŽ˜์ด์ง€๋ฅผ ์ตœ์ ํ™”ํ•จ์ด ๋ชฉํ‘œ!Tailwind CSS ๋Š” ๋ฏธ๋””์–ด ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ , ๋ฏธ๋ฆฌ ์ •์˜๋œ breakpoint Utility๋ฅผ ํ†ตํ•ด ์†์‰ฝ๊ฒŒ ๋ฐ˜์‘ํ˜• ๋””์ž์ธ์„ ๊ตฌํ˜„! ์š”์•ฝ 1. ํ•™์Šต๋‚ด์šฉ : Responsive 2. ํ•™์Šต๋‚ด์šฉ : ์ƒ์„ธ 1. ํ•™์Šต๋‚ด์šฉ : Responsive โ—ผ๏ธŽ ๋ฐ˜์‘ํ˜• ๋””์ž์ธ (Responsive Design) ์ •์˜- ๋ฐ˜์‘ํ˜• ๋””์ž์ธ : ๋ฐ์Šคํฌํƒ‘, ํƒœ๋ธ”๋ฆฟ, ๋ชจ๋ฐ”์ผ ๋“ฑ ๋‹ค์–‘ํ•œ ๊ธฐ๊ธฐ์—์„œ 2025. 6. 11.
[Tailwind CSS] 10. Responsive ๋ชจ๋ฐ”์ผ ์šฐ์„ (Mobile-First) ์„ค๊ณ„ ๋ฐฉ์‹์„ ์ดํ•ดํ•˜๊ณ , ์›นํŽ˜์ด์ง€๋ฅผ ์ตœ์ ํ™”ํ•จ์ด ๋ชฉํ‘œ!Tailwind CSS ๋Š” ๋ฏธ๋””์–ด ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ , ๋ฏธ๋ฆฌ ์ •์˜๋œ breakpoint Utility๋ฅผ ํ†ตํ•ด ์†์‰ฝ๊ฒŒ ๋ฐ˜์‘ํ˜• ๋””์ž์ธ์„ ๊ตฌํ˜„! ์š”์•ฝ 1. ํ•™์Šต๋‚ด์šฉ : Responsive 2. ํ•™์Šต๋‚ด์šฉ : ์ƒ์„ธ 1. ํ•™์Šต๋‚ด์šฉ : Responsive โ—ผ๏ธŽ ๋ฐ˜์‘ํ˜• ๋””์ž์ธ (Responsive Design) ์ •์˜- ๋ฐ˜์‘ํ˜• ๋””์ž์ธ : ๋ฐ์Šคํฌํƒ‘, ํƒœ๋ธ”๋ฆฟ, ๋ชจ๋ฐ”์ผ ๋“ฑ ๋‹ค์–‘ํ•œ ๊ธฐ๊ธฐ์—์„œ ์›น์‚ฌ์ดํŠธ๊ฐ€ ๊ธฐ๊ธฐ์˜ ํ™”๋ฉด ํฌ๊ธฐ์— ๋งž์ถฐ ์ž๋™์œผ๋กœ ๋ ˆ์ด์•„์›ƒ์„ ์กฐ์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•- ์‚ฌ์šฉ์ž๊ฐ€ ์–ด๋–ค ๊ธฐ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜๋“  ์ตœ์ ์˜ UX๋ฅผ ์ œ๊ณต๋ฐ›์„ ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค. โ—ผ๏ธŽ BreakPoint- ์ •์˜ : ์›น์‚ฌ์ดํŠธ๊ฐ€ ํ™”๋ฉด ํฌ๊ธฐ์— ๋”ฐ๋ผ ๋ ˆ์ด์•„์›ƒ์ด๋‚˜ ์Šคํƒ€์ผ์— ๋ณ€๊ฒฝ์„ ์ค˜์•ผํ• .. 2025. 6. 11.
[Tailwind CSS] 9. Position: fixed, sticky fixed์™€ sticky ์†์„ฑ์„ ํ™œ์šฉํ•ด ์‹œ๋ฉ˜ํ‹ฑํ•œ(์˜๋ฏธ๋ก ์ ) ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ๊ณ ์ •๋œ ํ—ค๋”์™€ ์Šคํฌ๋กค์‹œ ์šฐ์ธก์— ํ•จ๊ป˜ ์œ ์ง€๋˜๋Š” ์ƒํ’ˆ ์ •๋ณด์™€ ๊ฒฐ์ œ ๋ฒ„ํŠผ์ด ํฌํ•จ๋œ UI๋ฅผ ๊ตฌ์„ฑ์„ ๋ชฉํ‘œํ•œ๋‹ค. ์š”์•ฝ 1. ํ•™์Šต๋‚ด์šฉ : Position : fixed 2. ํ•™์Šต๋‚ด์šฉ : Position : sticky ์ƒ์„ธ 1. ํ•™์Šต๋‚ด์šฉ : Position : fixed โ—ผ๏ธŽ Position : fixed ์ •์˜fixed๋Š” ์š”์†Œ๋ฅผ ๋ทฐํฌํŠธ์— ๊ณ ์ •ํ•ด, ์Šคํฌ๋กค ์‹œ์—๋„ ํ•ด๋‹น ์š”์†Œ๊ฐ€ ๊ณ ์ •๋œ ์œ„์น˜์— ๋จธ๋ฌผ๊ฒŒ ํ•œ๋‹ค. โ—ผ๏ธŽ Position : fixed ์˜ˆ์‹œ : header ๋ฅผ ๊ณ ์ •ํ•ด์•ผํ•  ๋•Œ- fixed ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด, ์š”์†Œ๊ฐ€ ์›๋ž˜์˜ ํ๋ฆ„์—์„œ ๋ฒ—์–ด๋‚˜๊ฒŒ ๋˜๊ธฐ์— ๊ฐ€๋กœ ๋„ˆ๋น„๋„ ๋‹ฌ๋ผ์ง„๋‹ค. ๋Œ€์ฒ˜1) fixed + w-full (100%) .. 2025. 6. 11.