Забыл написать...
Решил этот вопрос.
Помог "target.getBoundingClientRect();"
Прикрепляю код. Его можно почистить, у меня на это времени не хватило уже, но я уверен что можно уменьшить код и облегчить
function moveElement() {
$('[data-parent-move]').each(function() {
var $this = $(this),
object = $(this).find('[data-move]'),
valueX,
valueY,
posX,
posY;
$(this).on('mouseenter', function(){
$(this).find('[data-move]').each(function(){
posX = parseInt($(this).css('left'),10);
posY = parseInt($(this).css('top'),10);
moveOnBoard($(this), posX, posY);
})
})
function moveOnBoard($this2, posX, posY){
$this.on('mousemove', function(e){
if(e.target.closest('[data-parent-move]')){
var target = e.target.closest('[data-parent-move]');
var targetCoords = target.getBoundingClientRect();
var xCoord = e.clientX - targetCoords.left;
var yCoord = e.clientY - targetCoords.top;
if ($this2.attr('data-move') == 'plus') {
valueX = (e.pageX * -1 / $this2.attr('data-move-speed'));
valueY = (yCoord * -1 / $this2.attr('data-move-speed'));
moveSide($this2, valueX, valueY, posX, posY);
} else {
valueX = (e.pageX * 1 / $this2.attr('data-move-speed'));
valueY = (yCoord * 1 / $this2.attr('data-move-speed'));
moveSide($this2, valueX, valueY, posX, posY);
}
}
})
}
})
}
function moveSide(object, valueX, valueY, posX, posY){
object.css({
'transform' : 'translate(' + valueX + 'px,' + (valueY) + 'px)',
'transition' : 'all .2s',
'transition-timing-function' : 'ease-out'
})
}