target.addEventListener("mousedown", (e) => {
console.log(e);
});
๋ค์์ ๋ง์ฐ์ค ํด๋ฆญ ์ด๋ฒคํธ๋ฅผ ์ถ๋ ฅํ์ ๋ ๋์ค๋ ๊ฒฐ๊ณผ๋ค.
์ด๋ ๋ง์ฐ์ค ์ปค์์ ์์น๋ฅผ ๊ธฐ์ค์ผ๋ก ํน์ ์ด๋ฒคํธ๋ฅผ ์๋์ํค์ ํ๋ค๋ฉด ์ด๋ค ๊ฐ์ ๋ด์ผํ ๊น?
X, Y์ธ ๊ฒ์ ๋๋ ์ ์๊ฒ ๋๋ฐ X, Y๊ฐ ๋๋ฌด ๋ง๋ค. ํ๋ํ๋ ์์๋ณด์.
ํด๋ผ์ด์ธํธ ์์ญ์์ ์ข์ธก ์๋จ์ ๊ธฐ์ค์ผ๋ก X, Y ์ขํ๋ฅผ ๋ํ๋ธ๋ค. ํด๋ผ์ด์ธํธ ์์ญ์ ํ์ฌ ์ฌ์ฉ์๊ฐ ๋ณด๊ณ ์๋ ๋ธ๋ผ์ฐ์ ๋ถ๋ถ์ด๋ค.
๋ง์ฝ ์คํฌ๋กค์ด ์๋ ํ์ด์ง์์ ์ฌ์ฉ์๊ฐ ์คํฌ๋กค์ ๋ด๋ ค๋ ๊ฐ์ ์์น์์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ค๋ฉด ๋์ผํ ๊ฐ์ ๊ฐ์ง๋ค.
์ปดํจํฐ ๊ณผํ์์ ๋ฐฐ์ด์ด๋ ์๋ฃ ๊ตฌ์กฐ ์ค๋ธ์ ํธ ๋ด์ ์คํ์ (offset)์ ์ผ๋ฐ์ ์ผ๋ก ๋์ผ ์ค๋ธ์ ํธ ์์์ ์ค๋ธ์ ํธ ์ฒ์๋ถํฐ ์ฃผ์ด์ง ์์๋ ์ง์ ๊น์ง์ ๋ณ์์ฐจ๋ฅผ ๋ํ๋ด๋ ์ ์ํ์ด๋ค.
offset์ ๋ํด ๊ฒ์ํ์ ๋ ๋์ค๋ ์ํคํผ๋์ ๋ฌธ์ ๋ด์ฉ์ด๋ค.
๊ฐ๋จํ๊ฒ ๋งํ๋ฉด offset์ ์์์ ์ผ๋ก ๋ถํฐ์ ๊ฑฐ๋ฆฌ์ด๋ค. ๋ง์ฐ์ค ์ด๋ฒคํธ์ ์์์ ์ ์ด๋๊น?
๋ฐ๋ก ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ์์์ ์ข์ธก ์๋จ์ด๋ค. ์ข์ธก ์๋จ์ผ๋ก๋ถํฐ ์ด๋ฒคํธ ๋ฐ์์ง์ ๊น์ง์ ๊ฑฐ๋ฆฌ๊ฐ offsetX, offsetY๋ก ๋ํ๋๋ค.
๋ฌธ์ ์ ์ฒด๋ฅผ ๊ธฐ์ค์ผ๋ก ์ด๋ฒคํธ ๋ฐ์์ง์ ์์น๋ฅผ ๋ํ๋ธ๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก ์์ ์ ๋ฌธ์์ ์ข์ธก ์๋จ์ด๋ค.
์คํฌ๋กค์ด ์๋ ๋ฌธ์๋ผ๋ฉด clientX, clientY์ ๋์ผํ ๊ฐ์ ๋ํ๋ธ๋ค.
์ฌ์ฉ์์ ์คํฌ๋ฆฐ, ์ผ๋ฐ์ ์ผ๋ก ๋ชจ๋ํฐ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ด๋ฒคํธ์ ์ขํ๋ฅผ ๋ํ๋ธ๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก ์์ ์ ์ข์ธก ์๋จ์ด๋ค.