2016-02-28 3 views
0

Я пытаюсь сделать изображение прикрепленным к мыши, и оно не отображается правильно, когда я наводил изображение. Мне нужно сделать так, чтобы предварительный просмотр изображения, который тянется мыши, и больше на предварительном просмотре мыши. Не могли бы вы мне помочь?Images are not trailing mouse

Вот скрипка:

https://jsfiddle.net/pgyt1qpg/1/

вот код:

document.querySelector('.container').addEventListener('mouseover', function(e) { 
    e.preventDefault(); 
    if (e.target.tagName === 'IMG') { 

    //create the div tag for preview 
    var myElement = document.createElement('div'); 
    myElement.className = 'preview'; 
    e.target.parentNode.appendChild(myElement); 
    //Create the image element for preview 
    var myImg = document.createElement('img'); 
    var imgLoc = e.target.src; 
    myImg.src = imgLoc; 

    myElement.style.left = e.offsetX + 15 + 'px'; 
    myElement.style.top = e.offsetY + 15 + 'px'; 
    myImg.style.width = "500px"; 
    myImg.style.height = "500px"; 
    myElement.style.zIndex = "-1"; 
    myElement.appendChild(myImg); 

    //When mouse goes out of the image delete the preview 
    e.target.addEventListener('mouseout', function handler(d) { 
     var myNode = d.target.parentNode.querySelector('div.preview'); 
     myNode.parentNode.removeChild(myNode); 
     e.target.removeEventListener('mouseout', handler, false); 
    }, false); 

    //place the image 15 inches to the bottom, right of the mouse 
    e.target.addEventListener('mousemove', function(f) { 
     myElement.style.left = f.offsetX + 15 + 'px'; 
     myElement.style.top = f.offsetY + 15 + 'px'; 
    }); 

    } 
}, false); 

UPDATE:

Я обновил скрипку (большое спасибо питер) и изображение теперь находится на правой стороне. Мне просто нужно приблизиться к мыши. Как мне это сделать?

+1

Что не работает? Изображения, имеющие относительный путь, не будут загружены в Fiddle ... – Rayon

+0

Изображения не следуют за мышью, когда они парят, и в моем файле предварительные изображения изображений сверху находятся за изображениями в середине. – HawkBlade124

ответ

0

Задача 1: Предварительный просмотр наведите курсор мыши, чтобы следовать за мышью.

Решение: Добавить относительное или абсолютное позиционирование.

myElement.style.position = 'absolute';

Задача 2: Получение парения предварительного просмотра, чтобы появиться над эскизами.

Solution (создает новую проблему, хотя): Поднимите z-index до 2.

Это создаст проблему зависания просмотра отключающего событие при наведении на миниатюру, когда она появляется. Вы можете решить эту проблему, проверив координаты мыши в событии mouseout и посмотрев, действительно ли они находятся за пределами выделенного миниатюры. Если это не так, вы закрываете предварительный просмотр, потому что это просто перерыв. Есть и другие способы сделать это, но вам удобнее с координатами, так что это пришло в голову.

Кроме того, вам необходимо настроить координаты отслеживания мыши, чтобы они соответствовали фактическому курсору. Это должно заставить вас двигаться, не стесняйтесь обновлять Fiddle и спрашивать, есть ли больше проблем.

+0

Я обновил скрипку, и изображение находится на правой стороне мыши и отлично следит за мышью. Все, что мне нужно, это изображение размером 15 пикселей вправо и 15 пикселей ниже мыши. Когда я изменил пиксели на обоих смещениях, это не сработало. Что я делаю не так? – HawkBlade124

+0

http://stackoverflow.com/questions/7790725/javascript-track-mouse-position –

+0

Хорошо, я прочитал это, и я думаю, что для изменения положения изображения так, чтобы он был установлен на 15 пикселей справа , и 15px на дно, мне нужно использовать значения 'pageX и pageY' 'правильно? – HawkBlade124

0

Я не могу комментировать .. Но чтобы ответить на ваш последний вопрос в комментариях к ответу, я считаю, что вам нужно будет сделать что-то вроде this.

Вам необходимо обновить изображение, чтобы получить первоначальный размер.

+0

Спасибо, я ценю это! Я получил это до такой степени, что изображение следует за мышью, но мне нужно, чтобы изображение было ближе к мыши. Как мне это сделать? – HawkBlade124