15๋ ์ด์ ์ฌ๋ฌ ๊ธฐ์ ๊ณผ ์ธ๋ก ์ฌ์์ front-end ๊ฐ๋ฐ ๋ฐ
๋ฐ์ดํฐ ์๊ฐํ, ์ธํฐ๋ํฐ๋ธ ์ฌ์ดํธ ์ ์์ ํ์ต๋๋ค.
https://brunch.co.kr/@yahao2512
์ ์ ํจ๊ป ๊นํธ์ฒ๋ผ ๊ฐ๋ฒผ์ด ์ฝ๋ฉ ํจ๊ป ํด๋ณด์์ฃ !
Courses
Reviews
- Interactive Web Development Know-How in a Few Lines [Beginner's Edition]
- Interactive Development Practice End [Capacity Enhancement]
- Interactive Web Development Know-How in a Few Lines [Beginner's Edition]
- Interactive Web Development Know-How in a Few Lines [Beginner's Edition]
- Interactive Development Practice End [Capacity Enhancement]
Posts
Q&A
์บ๋ฒ์ค ํฌ๊ธฐ๋ฅผ ์ง์ ํ์ ๋ onDocumentMouseMove ์ด๋ฒคํธ ๊ด๋ จ
์๋ ํ์ธ์canvas ์ mouseMove ์ด๋ฒคํธ๋ฅผ ๊ฑธ์ด๋ณด์ธ์. document ์ ์ด๋ฒคํธ๊ฐ ๊ฑธ๋ ค์์ด์ html ์ ์ฒด์์ ์ด๋ฒคํธ๊ฐ ์๋์ ํ๊ณ ์๊ฑฐ๋ ์. ์ด๋ค '๊ฐ๋จํ ๋ฐฉ๋ฒ'์ ์ง๋ฌธํ์๋ ๊ฑด์ง ์ ๋ชจ๋ฅด๊ฒ ์ด์. ์ํ๋ ๋์์ ๋ค์ ํ ๋ฒ ์ง๋ฌธํด์ฃผ์ธ์~
- 0
- 1
- 44
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
- 46
Q&A
์ฝ๋์ ๋ํด ์ง๋ฌธ์์ต๋๋ค.
์๋ ํ์ธ์ ์ฝ๋ฉ์ผ๋ ๋ธ์ ๋๋ค.๋ชจ๋ ์ฝ๋๋ฅผ ์ดํดํ์ง ์์ผ์ ๋ ์ฌ์ฉํ์๋๋ฐ ๋ฌธ์ ๋ ์์ง๋ง ์กฐ๋ช ์ด๋ ํฌ์ง์ ๋ฑ ์ฐจ์ด ์ ๋ ํด์์ ๊ฐ๋ฅํ์ ์ผ ํ ๊ฒ ๊ฐ์์. ๊ทธ๋์ผ ๋์ค์ ํ์ํ ๊ฒ์ ๋ณต๋ถํด์ ์ฌ์ฉ๋ ๊ฐ๋ฅํ๋๊น์.์ง๊ธ์ ์๋ ์ฝ๋๋ฅผ ์กฐ๊ธ์ฉ ๋ฐ๊ฟ๊ฐ๋ฉฐ ์์ฉํ์๋ฉด ๋ฉ๋๋ค. ์ ๋ ๋ชจ๋ ์ฝ๋๋ฅผ ์๋ก ์์ฑํ์ง๋ ์์์.
- 0
- 2
- 60
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
- 54
Q&A
go live ์ค์๊ฐ ํฌ๋กฌ
์๋ ํ์ธ์. ํน์ vscode์ go live ๋ฒํผ์ ๋๋ฅด๋ฉด ๋ธ๋ผ์ฐ์ ๊ฐ ์๋์ผ๋ก ์คํ์ด ๋์๋์?๋ธ๋ผ์ฐ์ ์์ http://127.0.0.1:5500/index.html
- 0
- 1
- 225
Q&A
javascript ๋์๋ง vsCode ํ์ฅํฉ ๋ฌธ์!
https://marketplace.visualstudio.com/items?itemName=TabNine.tabnine-vscode์ด๊ฑฐ ์ค์นํด๋ณด์ธ์~
- 0
- 1
- 291
Q&A
๋ธ๋ก๊ทธ ์๋จ ํ๋ด๋ ์ค ํจ๊ณผ ๊ตฌํ ์ง๋ฌธ ์์ต๋๋ค!
์๋ ํ์ธ์. css์ background ์์ฑ์ url("...") center 0 / cover no-repeat; ๋ก ์ค์ ํด๋๊ณ ์์ํ์ ๋ ๋ฉ๋๋ค. ํ ๋ฒ ํ ์คํธ ํด๋ณด์๊ฒ ์ด์?
- 0
- 1
- 287
Q&A
๋ชจ๋ฐ์ผ ์ค์์ดํ ๊ตฌํ ๋ง์ง๋ง ์์
์๋ ํ์ธ์.์ํ๋๋๋ก ๋์์ ํ์ ๋ค๋ฉด ๋ง์ต๋๋ค.์ ๊ฐ ๊ถ๊ธํ ๋ถ๋ถ์if (pageNum > 0) { pageNum--; } else { pageNum = totalNum - 1; }pageNum ์ด 0๋ณด๋ค ์์ผ๋ฉด pageNum = 0; ์ ํด์ค์ผํ๋ ๊ฒ ์๋๊ฐ์?์ด๋ป๊ฒ ๊ตฌํ์ ํ์๋ ค๋์ง ์ ํํ ๋ชจ๋ฅด๊ฒ ์ง๋ง์. ์๋๋if (pageNum pageNum = totalNum - 1; ์ด๋ผ๊ณ ํด์ค์ผ ํ ๊ฒ ๊ฐ์์.์๋๋ฉด ๋นผ๋ ๋์์ด ๊ฐ์ ๊ฒ ๊ฐ์์. if (pageNum > 0) { pageNum--; } // if (pageNum
- 0
- 2
- 322
Q&A
๋ง์ฐ์ค ์ธํฐ๋ ํฐ๋ธ ๋ณํ ์ง๋ฌธ
์๋ ํ์ธ์ ๋ต๋ณ์ด ๋ฆ์์ต๋๋ค. '๋ง์ฐ์ค ๊ถค์ ์ ๋ฐ๋ผ์ ์ด๋ฏธ์ง๊ฐ ์์์ฒ๋ผ ๋์ด๋๋ ๊ฒ์ผ๋ก ๋ณด์ด๊ฒ' ์ ๋ํ ์ ํํ ๋๋์ ์ ๋ชจ๋ฅด๊ฒ ์ด์ ๋ต๋ณ์ ๋ชป๋๋ฆฌ๊ณ ์์ต๋๋ค. ํน์ ๋น์ทํ ๋ ํผ๋ฐ์ค ์ฌ์ดํธ๊ฐ ์์ผ๋ฉด ๊ฐ์ด ๊ณ ๋ฏผํด ๋ณผ ์ ์์ ๊ฒ ๊ฐ์์.
- 0
- 1
- 272
Q&A
TextureLoader๊ด๋ จ ์ง๋ฌธ ๋๋ฆฝ๋๋ค.
์๋ ํ์ธ์ ์บ์ 3d ๋ชจ๋ธ๋ฌ๊ฐ ๋ชจ๋ธ๋ง์ ํ ๋ ๋งตํ๋ ํจ๊ป ํด์คฌ์ต๋๋ค. ์ํฉ์ ๋ค๋ฅผ ๊ฒ ๊ฐ๊ณ ์. ํ์ง๋ง ํ ์ค์ณ ๋ก๋๋ก ์ด๋ฏธ์ง๋ฅผ ๋ก๋ํ๊ณ ๋ชจ๋ธ๋ง์ ๋งตํํ๋ ๊ฒ์ ๋ง์ต๋๋ค.https://pickywicky.co.kr/ ์ ํ์ด์ง ๋ณด์๋ฉด ์บ ๋ชจ๋ธ๋ง ํ๋ ๋ก๋๋ฅผ ํ๊ณ ๋งตํ ์ด๋ฏธ์ง๋ ์ธ์ฅ์ ๋ก๋ํ ๋ค ํด๋ฆญ ์ ๊ต์ฒดํด์ฃผ๋ ๋ฐฉ์์ด๊ฑฐ๋ ์.const textureLoader = new THREE.TextureLoader(); const texture0 = textureLoader.load("/model/can.png"); const texture1 = textureLoader.load("/model/can_smoky.png"); const texture2 = textureLoader.load("/model/can_hot.png"); const textureArr = [texture0, texture1, texture2]; //์ด๋ฏธ์ง ๋ก๋ํด์ ๋ฐฐ์ด์ ๋ฃ์ model.traverse(function (child) { //๋ชจ๋ธ๋ง ์ํํ๋ฉฐ if (child.isMesh) { //๋ฉ์ฌ์ผ ๊ฒฝ์ฐ ๋งต ๊ต์ฒด child.material = new THREE.MeshStandardMaterial({ map: textureArr[num], }); child.material.magFilter = THREE.NearestFilter; child.material.minFilter = THREE.NearestMipMapLinearFilter; } });์ ์ฒ๋ผ ํ ๊ฒ์ธ๋ฐ์.๋ง์ฝ์ ๋ชจ๋ธ๋ง์์ ํ ๋ถ๋ถ๋ง ๋งตํ์ ํ๊ณ ์ถ์ผ์๋ฉด ๋ชจ๋ธ๋ฌ์๊ฒ ๋ชจ๋ธ๋ง ๋ ๋ถ๋ถ์ name์ ์ง์ ํด๋ฌ๋ผ๊ณ ํ์ธ์.์๋์ฒ๋ผ ํด๋ณด๋ฉด ๋ ๊ฒ ๊ฐ์๋ฐ์?ํ ์คํธ๊ฐ ํ์ํ๊ธฐ๋ ํฉ๋๋ค๋ง.if (child.name == "mappingArea" ) { //๋งตํ }
- 0
- 1
- 370