Изображение в hmtl-документе двигается не так, как было задумано
Приведу полный код ниже. Изображение должно двигаться так, чтобы пользователь при работе на странице всегда видел изображение, задний фон страницы за изображением виден быть не должен. То есть, границы координат изображения от 0 до ширинаОкна - ширинаИзображения и от 0 до длинаОкна - длинаИзображения
Может, я не так понял, какими должны быть минимальные и максимальные координаты изображения? Помогите, пожалуйста, понять, почему не работает, как должно. <html> <head> <meta charset="utf-8"> <style> #map { position: fixed; left: 0; top: 0; } </style> </head> <body style="overflow: hidden"> <img id ="map" src="big.jpg"></img> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> <script> //скрипт перемещения и масштабирования изображения //1)перемещение var lastMouseX = 0, lastMouseY = 0; //координаты мыши при предыдущем вызове mousemove var imgX = $("#map").offset().left; //координаты левого верхнего края изображения var imgY = $("#map").offset().top; var minX = ($(window).width()-document.getElementById("map").offsetWidth); //минимальные координаты изображения var minY = ($(window).height()-document.getElementById("map").offsetHeight); //ширинаОкна - ширинаИзображения и длинаОкна - длинаИзображения $("#map").mousemove(function(event){ var currentMouseX = event.pageX; //текущие координаты мыши var currentMouseY = event.pageY; var moveByX = currentMouseX-lastMouseX; //разница между текущими и предыдущими координатами мыши var moveByY = currentMouseY-lastMouseY; //т.е. перемещение мыши if((imgX+moveByX)<=0 && (imgX+moveByX)>=minX) { //если новый X изображения <= 0 и >= минимальному иксу, увеличить старый икс до нового imgX+=moveByX; } if((imgY+moveByY)<=0 && (imgY+moveByY)>=minY) { //если новый Y изображения <= 0 и >= минимальному Y, увеличить старый Y до нового imgY+=moveByY; } //задать изображению новые координаты $("#map").offset({left: imgX, top: imgY}); lastMouseY = currentMouseY; //старые координаты мыши = новые lastMouseX = currentMouseX; }); </script> </body> </html> |
CodeMonk3y,
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <style> #map { position: fixed; left: 0; top: 0; } </style> </head> <body style="overflow: hidden"> <img id ="map" src="http://www.nationalgeographic.com/content/dam/travel/rights-exempt/Travel-2016/59-parks-52-weeks/sequoia/giant-tree-trail-sequoia-national-park.jpg"></img> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> <script> $(window).on("load", function() { //скрипт перемещения и масштабирования изображения //1)перемещение var lastMouseX = 0, lastMouseY = 0; //координаты мыши при предыдущем вызове mousemove $("#map").mousemove(function(event){ var imgX = $("#map").offset().left; //координаты левого верхнего края изображения var imgY = $("#map").offset().top; var minX = ($(window).width()-document.getElementById("map").offsetWidth); //минимальные координаты изображения var minY = ($(window).height()-document.getElementById("map").offsetHeight); //ширинаОкна - ширинаИзображения и длинаОкна - длинаИзображения var currentMouseX = event.pageX; //текущие координаты мыши var currentMouseY = event.pageY; var moveByX = currentMouseX-lastMouseX; //разница между текущими и предыдущими координатами мыши var moveByY = currentMouseY-lastMouseY; //т.е. перемещение мыши if((imgX+moveByX)<=0 && (imgX+moveByX)>=minX) { //если новый X изображения <= 0 и >= минимальному иксу, увеличить старый икс до нового imgX+=moveByX; } if((imgY+moveByY)<=0 && (imgY+moveByY)>=minY) { //если новый Y изображения <= 0 и >= минимальному Y, увеличить старый Y до нового imgY+=moveByY; } //задать изображению новые координаты $("#map").offset({left: imgX, top: imgY}); lastMouseY = currentMouseY; //старые координаты мыши = новые lastMouseX = currentMouseX; }); }) </script> </body> </html> |
Цитата:
ну это все хорошо,но картинка 4000*6000 пикселей все равно не двигается до краев, как должно быть |
var currentMouseX = event.pageX*5; //текущие координаты мыши
var currentMouseY = event.pageY*5; а если добавить *5 или сколько нужно. |
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <style> #map { position: fixed; left: 0; top: 0; } </style> </head> <body style="overflow: hidden"> <img id ="map" src="http://www.nationalgeographic.com/content/dam/travel/rights-exempt/Travel-2016/59-parks-52-weeks/sequoia/giant-tree-trail-sequoia-national-park.jpg"></img> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> <script> $(window).on("load", function() { //скрипт перемещения и масштабирования изображения //1)перемещение var lastMouseX = 0, lastMouseY = 0; //координаты мыши при предыдущем вызове mousemove $("#map").mousemove(function(event){ var imgX = $("#map").offset().left; //координаты левого верхнего края изображения var imgY = $("#map").offset().top; var minX = ($(window).width()-document.getElementById("map").offsetWidth); //минимальные координаты изображения var minY = ($(window).height()-document.getElementById("map").offsetHeight); //ширинаОкна - ширинаИзображения и длинаОкна - длинаИзображения var currentMouseX = event.pageX*5; //текущие координаты мыши var currentMouseY = event.pageY*5; var moveByX = currentMouseX-lastMouseX; //разница между текущими и предыдущими координатами мыши var moveByY = currentMouseY-lastMouseY; //т.е. перемещение мыши if((imgX+moveByX)<=0 && (imgX+moveByX)>=minX) { //если новый X изображения <= 0 и >= минимальному иксу, увеличить старый икс до нового imgX+=moveByX; } if((imgY+moveByY)<=0 && (imgY+moveByY)>=minY) { //если новый Y изображения <= 0 и >= минимальному Y, увеличить старый Y до нового imgY+=moveByY; } //задать изображению новые координаты $("#map").offset({left: imgX, top: imgY}); lastMouseY = currentMouseY; //старые координаты мыши = новые lastMouseX = currentMouseX; }); }) </script> </body> </html> |
Цитата:
|
Цитата:
|
так сделайте *3 в чем проблема
|
Цитата:
|
CodeMonk3y,
понять бы что вы хотите сделать? |
может если мышь в края упирается двигать картинку потихой??
|
CodeMonk3y,
может быть вы хотели так ... <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <style> #map { position: fixed; left: 0; top: 0; } </style> </head> <body style="overflow: hidden"> <img id ="map" src="http://www.nationalgeographic.com/content/dam/travel/rights-exempt/Travel-2016/59-parks-52-weeks/sequoia/giant-tree-trail-sequoia-national-park.jpg"></img> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> <script> $(window).on("load", function() { var width = $("#map").width(); var height = $("#map").height(); $("body").mousemove(function(event){ var left = (width - $(window).width()) * event.pageX/$(window).width() var top = (height - $(window).height())* event.pageY/$(window).height() $("#map").css({left: -left, top: -top}); }); }) </script> </body> </html> |
Цитата:
|
Цитата:
|
Рони "захват по клику" в як да и гугл картах тоже.
|
https://javascript.ru/forum/job/2876...tml#post183237
Цитата:
<!DOCTYPE html> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <style type="text/css"> body{ overflow: hidden; } </style> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> <link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/themes/smoothness/jquery-ui.css"> <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script> <script> $(function() { $('#map').draggable({ start: function(event, ui) {$(this).stop()}, stop: function(ev, data) { var coef = 1.0 var left = (data.position.left - data.originalPosition.left) * coef; var top = (data.position.top - data.originalPosition.top) * coef; $(this).animate({ left: '+=' + left, top: '+=' + top }, 800, 'easeInSine'); } }) }); </script> </head> <body> <img id ="map" src="http://www.nationalgeographic.com/content/dam/travel/rights-exempt/Travel-2016/59-parks-52-weeks/sequoia/giant-tree-trail-sequoia-national-park.jpg"></img> </body> </html> |
Часовой пояс GMT +3, время: 06:53. |