Показать сообщение отдельно
  #1 (permalink)  
Старый 30.07.2012, 15:53
Профессор
Посмотреть профиль Найти все сообщения от Антон Крамолов
 
Регистрация: 11.04.2012
Сообщений: 255

Перетаскивание элементов на странице
Вот мой пример http://pastehtml.com/view/c6ix3o7f1.html, все работает, но:

1) если у блока задан маргин, неправильно определяется положение блока относительно курсора, мое решение такое:

function getComputedStyleProperty(el, prop) {
    return window.getComputedStyle(el, null).getPropertyValue(prop);
}

function makeDraggable(el) {
    var drag, dx, dy;
    el.style.position = 'absolute';
    el.style.cursor = 'move';
    
    el.onmousedown = function(e) {
        var pos = findPosition(this);
        dx = pos[0] - e.clientX - parseInt(getComputedStyleProperty(this, 'margin-left'));
        dy = pos[1] - e.clientY - parseInt(getComputedStyleProperty(this, 'margin-top'));
        this.style.zIndex = maxZindex++;
        drag = true;
    }
    
    document.addEventListener('mouseup', function() {drag = false}, false);
    
    document.addEventListener('mousemove', function(e) {  
        if (drag) {
            el.style.left = e.clientX + dx + 'px';
            el.style.top = e.clientY + dy + 'px';
        }
    }, false);
}


Но как быть со значениями в em, pt?

2) Покритикуйте код

Последний раз редактировалось Антон Крамолов, 30.07.2012 в 16:04.
Ответить с цитированием