๐ŸŒŠCSS ๋ฒ„ํŠผ ๋ฌผ๊ฒฐ(๋ฆฌํ”Œ) ํšจ๊ณผ ์ƒ์„ฑ๊ธฐ

์ˆœ์ˆ˜ CSS์™€ ์ตœ์†Œ JS ๋ฆฌํ”Œ ์ฝ”๋“œ๋ฅผ ๊ณจ๋ผ ๋ฐ›์œผ์„ธ์š”.

%
%
ms

๊ด€๋ จ๋œ ๋„๊ตฌ

๋ฒ„ํŠผ์„ ๋ˆ„๋ฅผ ๋•Œ ๋ฌผ๊ฒฐ์ด ํผ์ง€๋Š” ํšจ๊ณผ์˜ ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค์–ด ์ค๋‹ˆ๋‹ค. ์ƒ‰๊ณผ ๋ถˆํˆฌ๋ช…๋„, ํผ์ง ํฌ๊ธฐ, ์ง€์† ์‹œ๊ฐ„์„ ๋„ฃ์œผ๋ฉด ์ˆœ์ˆ˜ CSS ๋ฐฉ์‹๊ณผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ•จ๊ป˜ ์“ฐ๋Š” ๋ฐฉ์‹ ์ค‘ ํ•˜๋‚˜๋ฅผ ๊ณจ๋ผ ๋ฐ›์„ ์ˆ˜ ์žˆ๊ณ , ๋ฐ”๋กœ ์œ„ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ˆœ์ˆ˜ CSS ๋ฐฉ์‹์€ ::after์— ์›์„ ๋งŒ๋“ค์–ด ๋‘๊ณ  :active์ผ ๋•Œ scale์„ 0์—์„œ 1๋กœ ํ‚ค์›๋‹ˆ๋‹ค. ํฌ์ธํ„ฐ ์ขŒํ‘œ๋ฅผ CSS๊ฐ€ ์•Œ ์ˆ˜ ์—†์–ด์„œ ํผ์ง€๋Š” ์ค‘์‹ฌ์€ ํ•ญ์ƒ ์š”์†Œ์˜ ๊ฐ€์šด๋ฐ์ž…๋‹ˆ๋‹ค. JS ๋ฐฉ์‹์€ ํด๋ฆญํ•œ ์ง€์ ์„ ๊ธฐ์ค€์œผ๋กœ ์›์„ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด ๋ถ™์ด๊ณ  ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ๋๋‚˜๋ฉด ์ง€์›๋‹ˆ๋‹ค. ๋‘ ๋ฐฉ์‹ ๋ชจ๋‘ ์š”์†Œ์— position: relative์™€ overflow: hidden์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์†์„ฑ ์ •์˜๋Š” W3C CSS TransitionsยทAnimations ๋ช…์„ธ๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค(2026๋…„ 10์›” ๊ธฐ์ค€).

์ง€์† ์‹œ๊ฐ„๊ณผ ๊ณก์„ ์€ ๊ถŒ์žฅ๊ฐ’์„ ์ œ์‹œํ•˜์ง€ ์•Š๊ณ  ์ž…๋ ฅํ•œ ๊ฐ’์„ ๊ทธ๋Œ€๋กœ ์”๋‹ˆ๋‹ค. ์†๊ฐ€๋ฝ์„ ๋–ผ๋ฉด ์ˆœ์ˆ˜ CSS ๋ฐฉ์‹์˜ ๋ฌผ๊ฒฐ์€ ์ฆ‰์‹œ ์‚ฌ๋ผ์ง€๋ฉฐ, ๋ˆ„๋ฅธ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๋Š” ์ž”์ƒ ํšจ๊ณผ๋Š” ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์›€์ง์ž„์„ ์ค„์—ฌ ๋‹ฌ๋ผ๋Š” ์„ค์ •์„ ๋”ฐ๋ฅด๋ ค๋ฉด prefers-reduced-motion ๋ธ”๋ก์„ ๋”ฐ๋กœ ์ถ”๊ฐ€ํ•˜์„ธ์š”.

์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ

์ˆœ์ˆ˜ CSS๋กœ ํด๋ฆญํ•œ ์ž๋ฆฌ์—์„œ ํผ์ง€๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. CSS๋Š” ํฌ์ธํ„ฐ ์ขŒํ‘œ๋ฅผ ์•Œ์ง€ ๋ชปํ•˜๋ฏ€๋กœ ๊ฐ€์šด๋ฐ์—์„œ ํผ์ง€๋Š” ๋ชจ์–‘๋งŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ํด๋ฆญ ์ง€์ ์ด ํ•„์š”ํ•˜๋ฉด JS ๋ฐฉ์‹์„ ๊ณ ๋ฅด์„ธ์š”.

overflow: hidden์€ ์™œ ํ•„์š”ํ•œ๊ฐ€์š”?

๋ฌผ๊ฒฐ ์›์ด ์š”์†Œ๋ณด๋‹ค ํฌ๊ฒŒ ์ž๋ผ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. overflow: hidden์ด ์—†์œผ๋ฉด ์›์ด ๋ฒ„ํŠผ ๋ฐ–์œผ๋กœ ์‚์ ธ๋‚˜์™€ ์ฃผ๋ณ€ ๋ ˆ์ด์•„์›ƒ์„ ๋ฎ์Šต๋‹ˆ๋‹ค.

์ง€์† ์‹œ๊ฐ„์€ ๋ช‡ ms๊ฐ€ ๋งž๋‚˜์š”?

์ด ๋„๊ตฌ๋Š” ๊ถŒ์žฅ ์‹œ๊ฐ„์„ ์ œ์‹œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ž…๋ ฅํ•œ ๊ฐ’์„ ๊ทธ๋Œ€๋กœ ์ฝ”๋“œ์— ๋„ฃ์œผ๋ฉฐ, ์ ์ ˆํ•œ ๊ธธ์ด๋Š” ๋ฒ„ํŠผ ํฌ๊ธฐ์™€ ์ œํ’ˆ ์„ฑ๊ฒฉ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค.