Javascript-форум (https://javascript.ru/forum/)
-   Я не знаю javascript (https://javascript.ru/forum/ya-ne-znayu-javascript/)
-   -   Вопрос новичка по DIV (https://javascript.ru/forum/ya-ne-znayu-javascript/3861-vopros-novichka-po-div.html)

De-Luxis 30.05.2009 18:14

Вопрос новичка по DIV
 
Прошу помощи местных гуру :help:
Сам яваскрипт только начал изучать.

Есть блок div с id="test". Блок ограничен 200 px по вертикали и горизонтали. Внутри находится картинка. Как сделать так, что бы при нажатии кнопки мыши, можно было перемещать размещение этой картинки внутри блока? Как на картах гул мэпс получается. Какртинка при этом больше самого блока.

Octane 30.05.2009 18:23

HTML:
<div id="test">
     <img src="…" alt="…" />
</div>

CSS:
#test {
position: relative;
overflow:hidden;
width: 200px;
height: 200px;
}
#test img {
position:absolute;
top: …px;
left: …px;
}


По событию mousedown на #test начинаешь процесс, по событию mousemove перемещаешь верхний левый угол изображения на соответствующие координаты, по событию mouseup прекращаешь действия.

egg 31.05.2009 00:44

я тоже начинающий, сталкивался с подобной задачкой, которую так как хотел не решил, заключалась она в следущем, при нажатии на картинку и удержинии кнопки мыши перетаскивать ее по экрану, при этом возникло две проблемы: при перетаскивании открывалось новое окно с этой картинкой и вторая-mousemove изменяло top-left,но на экране это никак не отображалось; первую решил изменяя returnValue для ondragstart, вторую не смог, может кто объяснит?:)

Octane 31.05.2009 12:09

Цитата:

Сообщение от egg
вторую не смог, может кто объяснит?

Код где?

egg 01.06.2009 17:30

кода уже нет, поэтому взял то что писали вверху, пока писал понял где ошибся:victory:
может кому понадобится
<div id=test>
  <img src="picture.jpg" onmousedown='ob=this;move()'>
</div>
<style>
#test {
position: relative;
overflow:hidden;
width: 200px;
height: 200px;
border:solid red
}
#test img {
position:absolute;
}
</style>
<script>
var ob,flag=false//ссылка на картинку;начинает и прекращает перемещение
var mx,my//координаты мыши отн.в.п.угла картинки
function move(){
//задание обработчиков событий
  ob.offsetParent.onmouseout=function(){flag=false}//выход за границы test
  ob.onmouseup=function(){flag=false}//отпускание кнопки
  ob.ondragstart=function(){return false}//отмена открытия окна
  ob.onmousemove=function(){ 
    if(!flag)return//холостой ход
    ob.style.left=event.clientX-mx//перемещение
    ob.style.top=event.clientY-my
  }
  with(ob.offsetParent){//test-объект по умолчанию
  //т.к.отсчет от<div>(плавающий),а не от угла окна,прибав. эту разность 
  mx=event.offsetX+offsetLeft+clientLeft
  my=event.offsetY+offsetTop+clientTop
  }
  flag=true//разрешить перемещение
}
</script>

буду рад выслушать замечания

x-yuri 02.06.2009 01:13

можешь еще почитать http://javascript.ru/ui/draganddrop

egg 02.06.2009 20:34

да, мне еще читать и читать, такое впечатление что мой самоучитель из каменного века


Часовой пояс GMT +3, время: 17:15.