(function(){
var body = document.body,
startX = -100,
startY = -100,
w = document.documentElement.offsetWidth,
h = document.documentElement.offsetHeight;
body.addEventListener('mousemove', function(evt){
var posX = Math.round(evt.clientX / w * startX)
var posY = Math.round(evt.clientY / h * startY)
body.style.backgroundPosition = posX + 'px ' + posY + 'px'
})
})()
Body можно заменить другим любым тегом, просто на body листенер вешается для захвата движения мышью. Где-то в javascript курсе было про обращение с помощью javascript к dom, это так делается:
<div id="superelement">....</div>
var vmestobody = document.getElementById('superelement')
vmestobody - это переменная, вместо body, где обращаемся к div с id superelement, то есть можно заменить в коде везде переменную body на vmestobody ну и стили задать див скорее всего придется (я про width).
Примерно так:
<div class="page-header">
<div id="superelement" class="ship_head"></div>
</div>
html, body {
height: 100%;
}
.ship_head {
background: url(https://images.wallpaperscraft.ru/image/les_derevia_tuman_124708_1920x1080.jpg) -100px -100px no-repeat;
transition: background-position .5s ease-out;
width: 500px;
height: 300px;
}
(function(){
var vmestobody = document.getElementById('superelement'),
startX = -100,
startY = -100,
w = document.documentElement.offsetWidth,
h = document.documentElement.offsetHeight;
vmestobody.addEventListener('mousemove', function(evt){
var posX = Math.round(evt.clientX / w * startX)
var posY = Math.round(evt.clientY / h * startY)
vmestobody.style.backgroundPosition = posX + 'px ' + posY + 'px'
})
})()
Пример (на Run нужно нажать):
https://jsfiddle.net/3mjdnbwv/