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

function makeMovable(a, b) {
    var position = window.getComputedStyle(a).getPropertyValue('position'), 
        prefix, offsetX, offsetY, movable, onSelectStart, dx, dy;   

    if (position == 'absolute' || position == 'fixed') {
        b = b || a;
        prefix = position == 'fixed' ? 'client' : 'page';
        offsetX = prefix + 'X';
        offsetY = prefix + 'Y';
        
        addEvent(b, 'mousedown', function(evt) {
            movable = true;
            // Запрещаем Хрому менять курсор при перетаскивании
            onSelectStart = document.onselectstart;

            document.onselectstart = function() {
                return false;
            }

            dx = a.offsetLeft - evt[offsetX];
            dy = a.offsetTop - evt[offsetY];
        });

        addEvent(document, 'mouseup', function() {
            if (movable) {
                movable = false;
                document.onselectstart = onSelectStart;        
            }
        });  

        addEvent(document, 'mousemove', function(evt) {
            if (movable) {
                // убираем выделение текста
                window.getSelection().removeAllRanges();
                // рассчитываем новую позицию
                a.style.left = evt[offsetX] + dx + 'px';
                a.style.top = evt[offsetY] + dy + 'px';
            }
        });
    }
}

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