์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- preferscolorscheme
- js์คํฌ๋กค์ด๋ฒคํธ
- ๋ฐ์ํ์น
- ์น๊ฐ๋ฐ
- ๋ฐ๋๋ผjs
- ui์ปดํฌ๋ํธ
- ์คํฌ๋กค์ ๋๋ฉ์ด์
- ์๋ฐ์คํฌ๋ฆฝํธ์ปดํฌ๋ํธ
- ๋ฐ๋๋ผ์คํฌ๋ฆฝํธ
- css์ ๋๋ฉ์ด์
- ํ ๋ง์๋์ ํ
- UIUX
- ์ ๊ทผ์ฑ
- ๋คํฌ๋ชจ๋
- ์นui๋์์ธ
- UX๋์์ธ
- ์ธํฐ๋ ํฐ๋ธui
- ์๋ฐ์คํฌ๋ฆฝํธ
- JavaScript
- ๋คํฌ๋ชจ๋ํ ๊ธ
- ์นUI
- ์น์ ๊ทผ์ฑ
- uiux๋์์ธ
- ์ฝ๋ฉ์์
- ์น๋์์ธ
- ๋ก์ปฌ์คํ ๋ฆฌ์ง
- ํ๋ก ํธ์๋
- css๋ณ์
- ์๋ฐ์คํฌ๋ฆฝํธui
- ์คํฌ๋ฆฐ๋ฆฌ๋์ง์
- Today
- Total
UI Code Lab
๐จ ์ ๋๋ฉ์ด์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ด CSS + JS๋ก ๋ถ๋๋ฌ์ด UI ์ ๋๋ฉ์ด์ ๋ง๋ค๊ธฐ ๋ณธ๋ฌธ
๐จ ์ ๋๋ฉ์ด์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ด CSS + JS๋ก ๋ถ๋๋ฌ์ด UI ์ ๋๋ฉ์ด์ ๋ง๋ค๊ธฐ
๐ฏ๊ฟ์์ด๐ 2025. 7. 14. 09:00
์์ฆ ์น์ฌ์ดํธ ๋ณด๋ฉด ์ธํฐํ์ด์ค์
์ ๋๋ฉ์ด์ ์ด ์ด์ง ๋ค์ด๊ฐ๋ ๊ฒ๋ง์ผ๋ก๋ ํ ๋ค๋ฅด๊ฒ ๋๊ปด์ง์์์?
๊ทผ๋ฐ ๋ง์ ๊ตฌํํ๋ ค๋ฉด
GSAP, Framer Motion ๊ฐ์
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ถํฐ ์๊ฐ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ฃ .
๊ทธ๋ฐ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ด๋
CSS์ ์๋ฐ์คํฌ๋ฆฝํธ๋ง์ผ๋ก
์ถฉ๋ถํ ๋ถ๋๋ฝ๊ณ ์์ฐ์ค๋ฌ์ด ์ ๋๋ฉ์ด์ ์ ๋ง๋ค ์ ์๋ค๋ ๊ฑฐ,
์๊ณ ๊ณ์ จ๋์?
์ค๋์ ์ ๋ง ๊ฐ๋ณ๊ฒ,
ํ์ง๋ง ํ์คํ๊ฒ ์ ๋๋ฉ์ด์ ์
๊ตฌํํ ์ ์๋ ๋ฐฉ๋ฒ์ ์๋ ค๋๋ฆด๊ฒ์!
โ ์ ๊ตณ์ด CSS + JS๋ก ์ ๋๋ฉ์ด์ ์ ๋ง๋ค๊น?
๊ฐ๋จํ ๋งํ๋ฉด:
- ๊ฐ๋ณ๊ณ ๋น ๋ฆ ๋๋ค! ๋ก๋ฉ ์๋ ๋น ๋ฅธ ์น์ด ์ ๋ฆฌํ๋๊น์.
- ์กฐ์ ์ด ์์ ๋กญ์ต๋๋ค! CSS๋ก ๋ชจ์ ๋ง๋ค๊ณ JS๋ก ์ํฉ์ ๋ฐ๋ผ ์ ์ด๋ ๊ฐ๋ฅํด์.
- ๋ธ๋ผ์ฐ์ ํธํ๋ ๊ด์ฐฎ์์! ๋๋ถ๋ถ์ ์ต์ ๋ธ๋ผ์ฐ์ ์์ ์์ฃผ ์ ์ง์๋ฉ๋๋ค.
์์๋ฉด์๋ ์ต์ ํ๋ ์น์ ๋ง๋ค๊ธฐ ๋ฑ ์ข์ ์กฐํฉ์ด์์. ๐
โจ CSS๋ก ๊ฐ๋จํ ์ ๋๋ฉ์ด์ ๋ง๋ค๊ธฐ
๊ฐ์ฅ ์ฌ์ด ๋ฐฉ๋ฒ๋ถํฐ ์์ํด๋ณผ๊ฒ์!
๐ฆ transition ์ฌ์ฉํ๊ธฐ
.button {
transition: transform 0.3s ease;
}
.button:hover {
transform: scale(1.1);
}
๋ฒํผ์ ๋ง์ฐ์ค๋ฅผ ์ฌ๋ฆด ๋ ์ด์ง ์ปค์ง๋ ํจ๊ณผ! ๊ฐ๋จํ์ฃ ?
๐ keyframes ํ์ฉํ๊ธฐ
@keyframes bounce {
0% { transform: translateY(0); }
50% { transform: translateY(-10px); }
100% { transform: translateY(0); }
}
.bouncy {
animation: bounce 0.6s infinite;
}
์ด์ง ํ๋ ๋๋์ผ๋ก ์ธํฐ๋์ ์ ์ค ์ ์์ด์. ๋ฒํผ, ๋ฐฐ๋, ๊ฐ์กฐํ ์์์ ๋ฑ์ ๋๋ค.
๐ง๐ป JavaScript๋ก ๋ ์ ๊ตํ ์ปจํธ๋กคํ๊ธฐ
๐ requestAnimationFrame์ด๋?
์๋ฐ์คํฌ๋ฆฝํธ์์ ์ ๋๋ฉ์ด์ ์ ๋ง๋ค ๋
requestAnimationFrame()์ด ํต์ฌ์ด์์.
setTimeout๋ณด๋ค ๋ถ๋๋ฝ๊ณ ,
๋ธ๋ผ์ฐ์ ๊ฐ ์ง์ ์ต์ ํํด์ ๋๊น ์์ด ๋์ํด์.
๐ฆ ๋ฐ์ค ๋ถ๋๋ฝ๊ฒ ์์ง์ด๊ธฐ
let pos = 0;
function moveBox() {
pos += 2;
box.style.left = pos + 'px';
if (pos < 300) requestAnimationFrame(moveBox);
}
moveBox();
์ฝ๋ ๋ช ์ค๋ก ์์ฐ์ค๋ฝ๊ฒ ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋! ์์ฃผ ๊ธฐ๋ณธ์ด์ง๋ง ํจ๊ณผ๋ ์ข์์.
๐ ์๋ ์กฐ์ ํ๊ณ ์ถ๋ค๋ฉด? Easing ํจ์ ์ฐ์ธ์!
์ง์ ์ ์ผ๋ก ์ฅ~ ์์ง์ด๋ ๊ฒ๋ณด๋ค
์ฒ์์ ๋๋ฆฌ๊ฒ → ์ค๊ฐ์ ๋น ๋ฅด๊ฒ → ๋์ ๋ค์ ๋๋ฆฌ๊ฒ
์ด๋ฐ ๋๋์ด ํจ์ฌ ์์ฐ์ค๋ฝ๊ณ ์๋ป์!
๐ข ์์: easeInOutQuad
function easeInOutQuad(t) {
return t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t;
}
์ด๊ฑธ ์ ๋๋ฉ์ด์ ์ ๋ฃ์ด์ฃผ๋ฉด ํจ์ฌ ์ฐฐ์ง ๋์์ด ๋ฉ๋๋ค.
๐งญ ์คํฌ๋กคํ ๋ ๋ํ๋๋ ์ ๋๋ฉ์ด์ ๋ ๊ฐ๋ฅ!
ํ๋ฉด์ ์๋๋ก ๋ด๋ฆด ๋ ํน์ ์์๊ฐ ์ฌ์ฉ ๋ฑ์ฅํ๋ฉด
์ฌ์ดํธ๊ฐ ๋ ์๋๊ฐ ์๊ฒ ๋๊ปด์ง์ฃ ?
โจ ๊ฐ๋จํ ์คํฌ๋กค ์ ๋๋ฉ์ด์
window.addEventListener('scroll', () => {
const el = document.querySelector('.fade-in');
const top = el.getBoundingClientRect().top;
const threshold = window.innerHeight * 0.8;
if (top < threshold) {
el.style.opacity = 1;
el.style.transform = 'translateY(0)';
} else {
el.style.opacity = 0;
el.style.transform = 'translateY(20px)';
}
});
.fade-in {
opacity: 0;
transform: translateY(20px);
transition: all 0.6s ease;
}
์๋ฐ ๋ฐฉ์์ผ๋ก ์คํฌ๋กค ์ธํฐ๋์ ๋ ์์ฝ๊ฒ ๊ตฌํํ ์ ์์ด์!
๐ช ์ฑ๋ฅ๊น์ง ์ฑ๊ธฐ๊ธฐ!
์ ๋๋ฉ์ด์ ์ด ๋ง์์ง๋ฉด ํ์ด์ง๊ฐ ๋๋ ค์ง ์๋ ์์ผ๋, ์๋ ํ๋ ๊ผญ ์ฐธ๊ณ ํ์ธ์:
- transform, opacity๋ง์ ์ค์ฌ์ผ๋ก ์ ๋๋ฉ์ด์ ๊ตฌ์ฑํ๊ธฐ
- requestAnimationFrame์ผ๋ก ๋ ๋๋ง ํ์ด๋ฐ ๋ง์ถ๊ธฐ
- DOM ์ ๊ทผ ์ต์ํํ๊ธฐ (querySelector ๋งค๋ฒ ์ฐ์ง ๋ง๊ณ ์บ์ฑํ๊ธฐ)
๐์์ฃผ ๋ฌป๋ ์ง๋ฌธ(FAQ)
Q. CSS๋ JS, ๋ญ๋ก ์ ๋๋ฉ์ด์ ๋ง๋๋ ๊ฒ ๋ ์ข์์?
→ ๋จ์ํ ๊ฑด CSS, ์กฐ๊ฑด์ด๋ ์๊ฐ ์ ์ด๊ฐ ํ์ํ๋ฉด JS ์ถ์ฒ!
Q. ์ ๋๋ฉ์ด์ ์ด ๋ฒ๋ฒ ๊ฑฐ๋ ค์...
→ transform ์์ฑ๋ง ์ฐ๊ณ , requestAnimationFrame์ผ๋ก ์ต๋ํ ์ต์ ํํด๋ณด์ธ์!
๐ ๋ง๋ฌด๋ฆฌํ๋ฉฐ
์ ๋๋ฉ์ด์ ์ ๋ํ ์ผ์์ ์ฌ์ฉ์ ๊ฒฝํ์ ์์ฑ์์ผ์ฃผ๋ ๋ฉ์ง ์์์ ๋๋ค.
์ด ๊ธ์ด ์ฌ๋ฌ๋ถ์ด ๋ ๋งค๋๋ฝ๊ณ ๊ฐ๋ฒผ์ด ์น์ ๋ง๋๋ ๋ฐ ๋์์ด ๋์๊ธธ ๋ฐ๋ผ์!
์ง์ ๋ง๋ CSS + JS ์ ๋๋ฉ์ด์ ์ผ๋ก ์น์ ์๊ธฐ๋ฅผ ๋ถ์ด๋ฃ๊ณ ,
๋ฐฉ๋ฌธ์๋ค์ ๋๊ธธ์ ์ฌ๋ก์ก์๋ณด์ธ์ ๐
๊ถ๊ธํ ์ ์ด๋ “์ด๊ฑด ์ข ๋ ๊น์ด ์๊ณ ์ถ๋ค!” ์ถ์ ๊ฒ ์๋ค๋ฉด ๋๊ธ๋ก ๋จ๊ฒจ์ฃผ์ธ์.
๋ค์ ๊ธ์์๋ ๋ ์ฌ๋ฏธ์๊ณ ์ ์ตํ ํ์ผ๋ก ์ฐพ์๋ต๊ฒ์!
์ข์์ ๐์ ๊ณต์ ๐๋ ํฐ ํ์ด ๋ฉ๋๋ค