Ограничение передвижения объекта по траектории в области
У меня дан красный квадрат внутри зеленого, а внутри зеленого есть желтый квадрат, так вот, нужно чтобы красный квадрат мог передвигаться только по зеленому не заходя не территорию желтого, пытался сравнивать координаты и через флаги, никак не получается это реализовать
Вот код: <html> <head> <meta charset="utf-8"> <title></title> </head> <div id="er" style="position:absolute; left:100;top:100;width:500;height:500;background-color:green"> </div> <div id="er1" style="position:absolute; left:150;top:150;width:400;height:400;background-color:yellow"> </div> <body onload="init(event)"> <div id="kv" style="position:absolute; left:150;top:100;width:50;height:50;background-color: red"> <div> <script> flag=false; //Связывание событий с функциями function init() {//Если мышка двигается то выполняется ф-ция dragIt document.all.kv.onmousemove=dragIt //Если кнопка мышки отпускается, то - ф-ция osvobodi document.all.kv.onmouseup=osvobodi document.all.kv.onmousedown=zachvat } function dragIt(evt) {//Параметр evt создаётся самим браузером sobytie = (evt) ? evt : (window.event) ? window.event : ""; if(flag) { document.all.kv.style.top=sobytie.clientY-25; if(parseInt(document.all.kv.style.top)<parseInt(do cument.all.er.style.top)){ document.all.kv.style.top=document.all.er.style.to p; } var t=parseInt(document.all.kv.style.top)+parseInt(doc ument.all.kv.style.height); var ter=parseInt(document.all.er.style.top)+parseInt(d ocument.all.er.style.height); if(t>ter){ document.all.kv.style.top=ter-parseInt(document.all.kv.style.height); } document.all.kv.style.left=sobytie.clientX-25; if(parseInt(document.all.kv.style.left)<parseInt(d ocument.all.er.style.left)){ document.all.kv.style.left=document.all.er.style.l eft; } var l=parseInt(document.all.kv.style.left)+parseInt(do cument.all.kv.style.width); var ler=parseInt(document.all.er.style.left)+parseInt( document.all.er.style.width); if(l>ler){ document.all.kv.style.left=ler-parseInt(document.all.kv.style.width); } } } function osvobodi() { flag=false;//устанавливается запрет на перетаскивание } function zachvat() { flag=true; //Перетаскивание разрешается } </script> </div> </div> </body> </html> |
Vadimass123,
Пожалуйста, отформатируйте свой код! Для этого его можно заключить в специальные теги: js/css/html и т.п., например: [html run] ... минимальный код страницы с вашей проблемой [/html] О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting. |
Часовой пояс GMT +3, время: 08:59. |