Движение фотографии внутри блока
Здравствуйте! На странице следующая структура: слева большой блок, а справа маленькие блоки с превью изображения. При клике на превью изображение исходного размера появляется в большом блоке слева. В этом блоке мы видим только часть изображения, а остальную часть можем смотреть, когда водим курсором внутри блока.
Вот код, который ловит событие .mousemove() и выполняет действия $("#big_photo").mousemove(function(e) { var offset = $(this).offset(); var relativeX = (e.pageX - offset.left); var relativeY = (e.pageY - offset.top); $("#big_photo img").css({"position":"relative","left":"-"+relativeX+"px","top":"-"+relativeY+"px"}); }); Все работает, но, когда я дохожу курсором до края блока, то я не вижу конец изображения. Оно показывается не полностью. В выражении с подсчетом координат мне нужно еще учитывать координаты самого изображения, но записать правильно у меня не получается. Если есть у кого идеи, скажите, пожалуйста. Буду благодарна! =) |
Evgeniya,
вариант ... <!DOCTYPE HTML> <html> <head> <title></title> <meta charset="utf-8" /> <style type="text/css"> #big_photo{ width: 200px; height: 100px; position: absolute; overflow: hidden; left: 300px } #big_photo img{ position: relative; } </style> <script src="http://code.jquery.com/jquery-latest.js"></script> <script type="text/javascript"> $(function(){ $("#big_photo").mousemove(function(e) { var offset = $(this).offset(); var divW = $("#big_photo").outerWidth(); var divH = $("#big_photo").outerHeight(); var sW = ($("#big_photo img").outerWidth() - divW)/divW; var sH = ($("#big_photo img").outerHeight()- divH)/divH; var relativeX = (e.pageX - offset.left); var relativeY = (e.pageY - offset.top); $("#big_photo img").css({ left: -(sW *relativeX)|0, top: -(sH*relativeY)|0 }); }); }); </script> </head> <body> <div class="tags" id="big_photo"><img src="http://if.mynet.com/93/3/58/1256714b.jpg" border="0" alt="" /></div> <img src="http://if.mynet.com/93/3/58/1256714b.jpg" border="0" alt="" width="200" /> </body> </html> |
Часовой пояс GMT +3, время: 13:55. |