Я представляю вам ... самый грязный (но работающий) код когда-либо!
Я думаю Я смог заставить его работать, добавив пару классов к элементам, которые вы хотитеперемещать и отслеживать, наведена ли мышь на изображение или нет.
Прежде всего, когда мышь наведет курсор на изображение, отследите состояние и удалите некоторые классы, которые означают, что элементы переводятся.
let hover = false;
$(".image-content-right").hover(
() => {
hover = true;
$(".cyan").removeClass("translated");
$(".small-cyan").removeClass("translated");
$(".small-darktangirine").removeClass("translated");
},
() => (hover = false)
);
Теперь, когда вы знаете, когда мышь наводит курсор на изображение, вы можете использовать эту информацию, чтобы решить, когда переводить изображение.
$(document).on("mousemove", function(e) {
// If the mouse if currently hovering the image
if (hover) {
(viewportWidth = document.documentElement.clientWidth),
(viewportHeight = document.documentElement.clientHeight);
(mouseX = (e.pageX / viewportWidth) * 2 - 1),
(mouseY = (e.pageY / viewportHeight) * 2 - 1);
(translateX = mouseX * maxDeltaX),
(translateY = mouseY * maxDeltaY);
// Translate the elements
jQuery(".cyan").css(
"transform",
"translate(" + translateX + "px, " + translateY + "px)"
);
jQuery(".small-cyan").css(
"transform",
"translate(" + translateX + "px, " + translateY + "px)"
);
jQuery(".small-darktangirine").css(
"transform",
"translate(" + translateX + "px, " + translateY + "px)"
);
} else {
// If the mouse is no longer hovering the image, add a class that
// adds a smooth transition to the elements, and translate them back
$(".cyan")
.addClass("translated")
.css("transform", "translate(" + 0 + "px, " + 0 + "px)");
$(".small-cyan")
.addClass("translated")
.css("transform", "translate(" + 0 + "px, " + 0 + "px)");
$(".small-darktangirine")
.addClass("translated")
.css("transform", "translate(" + 0 + "px, " + 0 + "px)");
}
});
Для получения плавного изображенияВернувшись в исходное положение (вместо мгновенного возврата назад), я добавил немного стиля перехода в класс transform
.
.translated {
/* This will make the transition back to the original spot smooth */
transition-duration: 0.2s;
transition-timing-function: linear;
}
Надеюсь, это сработает для вас, извините, это так грязно.