<div class="page-container">
<div class="page-back"></div>
</div>
* {
margin: 0;
padding: 0;
}
.page-container {
position: fixed;
width: 100%;
height: 100%;
background: #fff;
}
.page-back {
position: absolute;
width: 120%;
height: 120%;
left: -10%;
top: -10%;
background-image: url(https://images.unsplash.com/photo-1488866022504-f2584929ca5f?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=1462&q=80);
background-size: cover;
background-position: center;
}
var pageContainer = document.querySelector('.page-container');
var pageBack = document.querySelector('.page-back');
// 눈에 보이는 브라우저의 안쪽 값
var windowWidth = window.innerWidth;
var windowHeight = window.innerHeight;
pageContainer.addEventListener("mousemove", function(e) {
// console.log("pageX", e.pageX);
// console.log("pageY", e.pageY);
// 브라우저를 상하좌우로 반씩 나누어
// 마우스 위치에 따라 음수/양수의 작은 수로 만듦
var moveX = ((windowWidth / 2) - e.pageX) * 0.1;
var moveY = ((windowHeight / 2) - e.pageY) * 0.1;
// console.log('moveX', moveX);
// console.log('moveY', moveY);
// 위에서 만든 수를
// 1) margin값으로 활용하여 이미지 무브
// pageBack.style.marginLeft = `${moveX}px` // moveX + "px";
// pageBack.style.marginTop = `${moveX}px` // moveY + "px";
// 2) transform 활용 (속도 면에서 더 나아 추천)
pageBack.style.transform = `translate(${moveX}px, ${moveY}px`;
})
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.