event methods
- offset : 이벤트 대상 객체에서의 상대적 마우스 좌표위치를 반환한다.
- page : 전체 문서를 기준, 스크롤 화면 포함. 스크롤 시 값이 바뀐다.
- client : 브라우저 상 기준, 스크롤 무시.
- screen : 전체 모니터 스크린 기준, 브라우저를 움직여도 값이 같다.
http://megaton111.cafe24.com/2016/11/29/clientx-offsetx-pagex-screenx%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90/
let isDrawing = false;
let x = 0;
let y = 0;
const myPics = document.getElementById('myPics');
const context = myPics.getContext('2d');
// event.offsetX, event.offsetY gives the (x,y) offset from the edge of the canvas.
myPics.addEventListener('mousedown', e => {
x = e.offsetX;
y = e.offsetY;
isDrawing = true;
});
myPics.addEventListener('mousemove', e => {
if(isDrawing === true) {
drawLine(context, x, y, e.offsetX, e.offsetY);
x = e.offsetX;
y = e.offsetY;
}
});
window.addEventListener('mouseup', e => {
if(isDrawing === true) {
drawLine(context, x, y, e.offsetX, e.offsetY);
x = 0;
y = 0;
isDrawing = false;
}
});
function drawLine (context, x1, y1, x2, y2) {
context.beginPath();
context.strokeStyle = 'black';
context.lineWidth = 1;
context.moveTo(x1, y1);
context.lineTo(x2, y2);
context.stroke();
context.closePath();
}
https://developer.mozilla.org/en-US/docs/Web/API/Element/mousemove_event
강의를 듣다보니 하고 있지만 물론 이런 효과 굉장히 좋아하고 재밌는데 이렇게 하려고 생각하게 된 이유가 궁금한데 물어보기도 애매한.
const pageContainer = document.querySelector('.page-container');
const pageBack = document.querySelector('.page-back');
// 현재 화면(Viewport)의 크기
const windowWidth = window.innerWidth;
const windowHeight = window.innerHeight;
pageContainer.addEventListener('mousemove', function(e){
// mousemove 이벤트 객체의 pageX, pageY가 좌표값
// moveX, moveY는 중앙이 기준으로 `+ <-x-> -` 보통의 x,y 좌표의 y축 기준 거울상.
const moveX = ((windowWidth/2) - e.pageX) * 0.1;
const moveY = ((windowHeight/2) - e.pageY) * 0.1;
// pageBack.style.marginLeft = `${moveX}px`;
// pageBack.style.marginTop = `${moveY}px`;
pageBack.style.transform = `translate(${moveX}px, ${moveY}px)`;
})