хорошо, согласен
изначальная задача была - переносить объекты по заданной части экрана. Основным затыком стало то, что объект должен тормозиться у границы и не вылазить за неё. По поводу самого драг н дропа можно найти в интернете хорошие статьи, которые взять за шаблон, а вот с этим моментом оказалась проблема.
Для того чтобы перетаскивать элемент его нужно делать позиционированным относительно родителя, но чтобы оне не вылазил за границы долна быть проверка вида:
object.style.left = (maybe_left >= 0 && maybe_left<=(doska_width - object_width) - 2) ? maybe_left + 'px' : (maybe_left <= 0?'0px':(doska_width - object_width) - 2);
где maybe_left - потенциальное новое значение позиционирования
doska_width - ширина доски, по которой перетаскивается объект
object_width - ширина объекта
то, что вычетается циферками - это бордеры (не стал для них автомат настраивать)
Затык, о котором я даже и представить себе не мог и долгое время смотрел вообще в другую сторону - это определение ширины объекта, с условием, что она указана в css. Дело в том, что оказывается
object.currentStyle.width прокатит только для Opera и IE, остальные браузеры наотказ не хотят такое кушать. Для других браузеров приходится делать
window.getComputedStyle(object,null).width; Вот собственно и всё решение, к которому пришел
универсальное решение:
if( doska.currentStyle )
{
var doska_width = doska.currentStyle.width;
}
else if( window.getComputedStyle )
{
var doska_width = window.getComputedStyle(doska,null).width;
}
ЗЫ. Если у кого-то стоит задача по разработке драг-н-дропа в переделах ограниченной зоны - отпишитесь - выложу полный код, благо я всего две недели кожу на JS и код у меня пока более чем читабельный для любого уровня кодинга)))