15๋  ์ด์ ์ฌ๋ฌ ๊ธฐ์ ๊ณผ ์ธ๋ก ์ฌ์์ front-end ๊ฐ๋ฐ ๋ฐ
๋ฐ์ดํฐ ์๊ฐํ, ์ธํฐ๋ํฐ๋ธ ์ฌ์ดํธ ์ ์์ ํ์ต๋๋ค.
https://brunch.co.kr/@yahao2512
์ ์ ํจ๊ป ๊นํธ์ฒ๋ผ ๊ฐ๋ฒผ์ด ์ฝ๋ฉ ํจ๊ป ํด๋ณด์์ฃ ! 
Courses
Reviews
- Interactive Web Development Know-How in a Few Lines [Beginner's Edition]
- Three.js 3D Interactive Quick Start
- Three.js 3D Interactive Quick Start
- Interactive Development Practice End [Capacity Enhancement]
- Three.js 3D Interactive Quick Start
Posts
- Q&A - ์ ์๋๋ค์ - ์๋ ํ์ธ์์ฌ๋ ค์ฃผ์ ์์ค์ ๋ฌธ์ ๋ฅผ ์ฐพ์์ต๋๋ค. (์ฝ๋๋ ์ง์์ฃผ์ธ์)pageNum = Math.min(Math.ceil(scrolly / 100), totalNum); -> ์์  pageNum = Math.ceil(scrolly / 100); ์ ์ฒ๋ผ ๋ฐ๊ฟ์ฃผ์๋ฉด ์ ๋ฉ๋๋ค.์ด๋ฏธ์ง๋ ์ ๋ก๋๋๊ณ ์๋๋ฐ ์คํฌ๋กค ๊ฐ์ด ์ ๋์ด๊ฐ์ ๋ฐ์ํ ๋ฌธ์ ์์ต๋๋ค. - 0
- 2
- 15
 
- Q&A - ๋ฒ์ ์ ๋ํด์.... - ์์  ์ต์ ๋ฒ์ ์ ์ ์์จ์. ์กฐ๊ธ ์์ ๋ ์ด์  ๋ฒ์ ์ ์ฌ์ฉํ๋ ๊ฒ ๋ณดํต์ ๋๋ค๋ง. ๊ฐ์ ์ ์ ์๊ฐ์ด ์ข ์ง๋์ ๋ ๊ตฌ๋ฒ์ ์ด ๋์ด๋ฒ๋ ธ๋ค์. ^^;๋ฒ์ ์ด ์ฌ๋ผ๊ฐ ๋๋ง๋ค ์กฐ๊ธ์ฉ ๋ฌ๋ผ์ง๋ ์ ์ด ์์ด์. ์ค๋๋ api ๋ ๊ธฐ๋ฅ์ด ์์ด์ง๊ธฐ๋ ํ๊ณ ์๊ฒ๋ ํ๋กํผํฐ ์ด๋ฆ์ด ๋ณํ๋๊ธฐ๋ ํฉ๋๋ค. ์ง๊ธ ๋ฒ์ ์ผ๋ก ๊ธฐ๋ณธ๊ธฐ๋ฅผ ์ตํ์๊ณ ๋ฒ์ ์ ์ฌ๋ฆฌ์ค ํ์๋ฅผ ๋๋ผ๋ฉด ๋ฒ์ ์ ๋ง์ถฐ์ ๋ง์ด๊ทธ๋ ์ด์ ์ ํ๋ฉด ๋ฉ๋๋ค. ํฐ ํ์ด ๋ฐ๋์ง๋ ์์ผ๋๊น์. - 0
- 1
- 27
 
- Q&A - ์ด๋ฏธ์ง๊ฐ ์๋์ต๋๋ค. - ์๋ ํ์ธ์.์ด์  ํด๋น ์๋น์ค์์ ์  url์ ์ง์์ ์ ํ๋ค์. ๋ฐ๋์ง ๋ชจ๋ฅด๊ณ ์์์ต๋๋ค.์ด URL๋ก ๋ฐ๊ฟ์ ํด๋ณด์๊ฒ ์ด์? ๋๋ค์ผ๋ก ์ด๋ฏธ์ง๊ฐ ๋์ต๋๋ค. (400/300 ์ ์ด๋ฏธ์ง ์ฌ์ด์ฆ)https://picsum.photos/400/300i ๊ฐ์ ์ด์ฉํ๋ ค๋ฉด ์๋์ฒ๋ผ ์ฌ์ฉํ ์ ์์ต๋๋ค.https://picsum.photos/id/2/500/500 ์ค์  ์ฝ๋const imageMap = new THREE.TextureLoader().load( `https://picsum.photos/id/${i}/500/500` ); - 0
- 2
- 24
 
- Q&A - threejs ์ฌ์ดํธ ๋ค์ด๊ฐ๋ฉด ์ ์๋๊ณผ ๊ฐ์ ์ฝ๋๊ฐ ์๋์ต๋๋คใ - ์๋ ํ์ธ์. three.js ํ์ผ์ด๋ผ๋ ๊ฒ cdn ์ฃผ์๋ฅผ ๋ง์ํ์๋ ๊ฑธ๊น์?์์ ์๋ฃ์ ์๋ three.js ์ฃผ์๋ฅผ ์ฌ์ฉํ์ ๋ ๋ฉ๋๋ค.ํ์ด์ง๊ฐ ์ ๋ฐ์ดํธ๊ฐ ๋๋ฉด์ ์กฐ๊ธ์ฉ ๋ฌ๋ผ์ง๊ธฐ๋ ํฉ๋๋ค.๋ง์ฐ๋ฆฌ๊ฐ ํ์ํ ๊ฑด ์ผ๋จ ์๋์ฒ๋ผ three.js ๋ฅผ ๋ถ๋ฌ์์ ์ฌ์ฉํด๋ณด๋ ๊ฒ๋๋ค.๋ค๋ฅธ ์ง๋ฌธ ์์ผ์๋ฉด ๋ ์ง๋ฌธ ๋จ๊ฒจ์ฃผ์ธ์~ import three from 'https://cdn.jsdelivr.net/npm/three@0.176.0/+esm' - 0
- 1
- 58
 
- Q&A - ์บ๋ฒ์ค ํฌ๊ธฐ๋ฅผ ์ง์ ํ์ ๋ onDocumentMouseMove ์ด๋ฒคํธ ๊ด๋ จ - ์๋ ํ์ธ์canvas ์ mouseMove ์ด๋ฒคํธ๋ฅผ ๊ฑธ์ด๋ณด์ธ์. document ์ ์ด๋ฒคํธ๊ฐ ๊ฑธ๋ ค์์ด์ html ์ ์ฒด์์ ์ด๋ฒคํธ๊ฐ ์๋์ ํ๊ณ ์๊ฑฐ๋ ์. ์ด๋ค '๊ฐ๋จํ ๋ฐฉ๋ฒ'์ ์ง๋ฌธํ์๋ ๊ฑด์ง ์ ๋ชจ๋ฅด๊ฒ ์ด์. ์ํ๋ ๋์์ ๋ค์ ํ ๋ฒ ์ง๋ฌธํด์ฃผ์ธ์~ - 0
- 1
- 66
 
- Q&A - mousemove ์ ๋ฐ๋ผ ๋ค๋๋ ์ปค์ ์ด๋ฏธ์ง wheel ํ ๊ฒฝ์ฐ - ์๋ ํ์ธ์ ai๊ฐ ๋ต๋ณ์ ๋ฌ์์คฌ๊ตฐ์? ํํ์ผ๋จ wheel ์ด๋ฒคํธ์ x,y๊ฐ์ ๋ณ๊ฒฝํ๊ณ ์ถ์ผ์ ์ด์ ๊ฐ ํ์ด์ง๋ ์คํฌ๋กค ์ด๋ ๋๋๋ฐ ์ปค์๋ ๊ทธ๋๋ก ์์ด์๊ฒ ์ฃ ? mouse move ์ด๋ฒคํธ๋ ๋ง์ฐ์ค๋ฅผ ์์ง์ฌ์ผ ๋ฐ์ํ๋๊น ๊ทธ๋ ๊ฒ ๋๋๋ฐ์. ai๋ต๋ณ์ด๋ ๋น์ทํ๋ฐ requestAnimationFrame ์ ์ด์ฉํด๋ณด์ธ์. ๊ฐ์ ๋ค์ ๋์ฌํ ๋ฐ์. ์๋ ์ฝ๋๊ฐ ๊ณ์ ๋์๊ฐ๋ฉด ์คํฌ๋กค์ด ์ด๋์ ์๋ ๋ฐ๋ผ๋ค๋๊ฑฐ์์. ์คํฌ๋กค ์ด๋ฒคํธ์๋ ์ง์  ํจ์๋ฅผ ์์ฑํ์ง ์์ผ์ ๋ ๋ฉ๋๋ค.requestAnimationFrame(() => { x = e.pageX; y = e.pageY; cursor.style.transform = `translate(${x}px, ${y}px)`; }); - 0
- 2
- 103
 
- Q&A - ์ฝ๋์ ๋ํด ์ง๋ฌธ์์ต๋๋ค. - ์๋ ํ์ธ์ ์ฝ๋ฉ์ผ๋ ๋ธ์ ๋๋ค.๋ชจ๋ ์ฝ๋๋ฅผ ์ดํดํ์ง ์์ผ์ ๋ ์ฌ์ฉํ์๋๋ฐ ๋ฌธ์ ๋ ์์ง๋ง ์กฐ๋ช ์ด๋ ํฌ์ง์  ๋ฑ ์ฐจ์ด ์ ๋ ํด์์ ๊ฐ๋ฅํ์ ์ผ ํ ๊ฒ ๊ฐ์์. ๊ทธ๋์ผ ๋์ค์ ํ์ํ ๊ฒ์ ๋ณต๋ถํด์ ์ฌ์ฉ๋ ๊ฐ๋ฅํ๋๊น์.์ง๊ธ์ ์๋ ์ฝ๋๋ฅผ ์กฐ๊ธ์ฉ ๋ฐ๊ฟ๊ฐ๋ฉฐ ์์ฉํ์๋ฉด ๋ฉ๋๋ค. ์ ๋ ๋ชจ๋ ์ฝ๋๋ฅผ ์๋ก ์์ฑํ์ง๋ ์์์. - 0
- 2
- 93
 
- Q&A - ๋ถ๋๋ฌ์ด ์์ง์ ๊ตฌํ1 ๊ฐ์ ๋ถ๋ถ ์ง๋ฌธ์์ต๋๋ค. - ์ธํ๋ฐ AI ์ธํด์ด ์ ์ค๋ช ์ ํด์คฌ๋ค์.ํต์ฌ์ ์ด๊ธฐ๊ฐ 0 ์ค์ ๋ง์ฐ์ค ์์น ๊ฐ์ง๊ทธ๋ฆฌ๊ณ ํ๊ฒ์ด ๋ง์ฐ์ค๋ฅผ ๋ถ๋๋ฝ๊ฒ ๋ฐ๋ผ์ค๊ฒ ๋ง๋๋ ๊ฒ์ธ๊ฐ์ง ์ ๋๋ค.LOOP๊ฐ ๋๋ฉด์ ๋ง์ฐ์ค ์์น์ ๋ฐ๋ผ ํ๊ฒ์ ์์น๋ฅผ '๋ณํ' ์์ผ์ฃผ๋ ๊ฑฐ์์.๋ง์ฐ์ค ์์น์ ํ๊ฒ ์์น ๊ฐ์ ์ฐจ์ด์ ์๋๋ฅผ ๊ณฑํ์ฌ ๋จ์ ๊ฐ๋งํผ ์ด๋. ๋งค ํ๋ ์๋ง๋ค ๋ง์ฐ์ค ์์น๋ก ์กฐ๊ธ์ฉ ์ด๋ํ์ฌ ๋ถ๋๋ฌ์ด ํจ๊ณผ๋ฅผ ์ฃผ๊ฒ ๋ฉ๋๋ค. targetX += (x - targetX) * speed; targetY += (y - targetY) * speed; ํ์ฌ์์น += (๋ชฉํ - ๋จ์๊ฑฐ๋ฆฌ) x ๊ฐ์์ ์ํ ์ซ์ 1 += (10 - 1) x 0.02 ๋ถ๋๋ฝ๊ฒ ์์ง์ด๊ธฐ ์ํ ๊ณต์์ด๋ผ๊ณ ์๊ฐํ์๊ณ ์ฌ์ฉํ์๋ฉด ๋ฉ๋๋ค. speed ๋ณ์ ๊ฐ์ ๋ฐ๊ฟ๋ณด์๋ฉด์ ํ ์คํธ ํด๋ณด์ธ์.console.log(targetX ) ์ฐ์ด๋ณด์๊ณ ์. - 0
- 2
- 102
 
- Q&A - go live ์ค์๊ฐ ํฌ๋กฌ - ์๋ ํ์ธ์. ํน์ vscode์ go live ๋ฒํผ์ ๋๋ฅด๋ฉด ๋ธ๋ผ์ฐ์ ๊ฐ ์๋์ผ๋ก ์คํ์ด ๋์๋์?๋ธ๋ผ์ฐ์ ์์ http://127.0.0.1:5500/index.html - 0
- 1
- 265
 
- Q&A - javascript ๋์๋ง vsCode ํ์ฅํฉ ๋ฌธ์! - https://marketplace.visualstudio.com/items?itemName=TabNine.tabnine-vscode์ด๊ฑฐ ์ค์นํด๋ณด์ธ์~ - 0
- 1
- 330
 





