Отобразить координаты мыши над фотографией
Здравствуйте, уважаемые форумчане.
Как реализовать такую штуку: при наведении мыши на фото, в поле появляются координаты, которые относятся к фотографии. То есть, если фото 100х100, то в верхнем левом углу фотографии будет "0,0", в правом нижнем "100х100", учитывая, что реальный размер фото может по экрану быть растянут на 500х500. Может есть какие-то jquery-либы? |
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style> img { width: 100%; } </style> </head> <body> <div> <img src="http://javascript.ru/forum/images/ca_serenity/misc/logo.gif" alt=""> </div> <output></output> </body> <script> document.querySelector('img').onmousemove=function(e){ var mb = this.naturalWidth/this.width; document.querySelector('output').value = Math.ceil(e.offsetX*mb)+'----'+Math.ceil(e.offsetY*mb); }; </script> </html> не нужны тут либы |
или Math.floor вместо Math.ceil если хотите чтобы первый пиксель отображался как 0.
|
Глаза боялись - руки делали:
function MoveArea() { if (mouseOnPhoto) { var e = window.event; var posX = e.clientX; var posY = e.clientY; var photo = $('#photo'); var photoOffsetX = photo.offset().left; var photoOffsetY = photo.offset().top; var photoWidth = <?=$photoWidth;?>; var photoHeight = <?=$photoHeight;?>; var elemWidth = $('#photo').width(); var elemHeight = $('#photo').height(); var perWidth = (posX - photoOffsetX) / elemWidth; var perHeight = (posY - photoOffsetY) / elemHeight; var realX = Math.ceil( perWidth * photoWidth ); var realY = Math.ceil( perHeight * photoHeight ); //alert('pox: ' + photoOffsetX + ', poy: ' + photoOffsetY); //$('#area').css(''); //console.log(elemWidth, elemHeight); $('#area').offset({top: posY-10, left:posX-120}); var photoX = Math.floor(); var photoY = Math.floor(); $('#area').html(realX + ', ' + realY); } } </script> <div id="area" class="fly"></div> <img onmouseover="ShowArea()" onmouseout="HideArea()" onmousemove="MoveArea()" id="photo" src="<?=$path2?>" width="100%" /> ![]() Единственное, что пришлось добавить - это определение реального размера через PHP |
j0hnik,
хм... не знал про naturalWidth.. а проблема с offset'ами решается? |
|
Цитата:
|
Цитата:
Имею в виду, на странице фото расположено не в 0,0.. Или это в Вашем коде роли не играет? |
так offset как раз и показывает координаты относительно элемента
вот хорошая статейка. http://shpargalkablog.ru/2013/05/get...nside-div.html |
Цитата:
|
Часовой пояс GMT +3, время: 15:32. |