отключения стилей при drag&drop
Приветствую всех. Люди подскажите как при событие drag&drop отключать все стили у объекта, а лучше вообще оставить лишь один контур его чтобы было видно куда перемещать. Дело в том что у объекта масса всяких стилей CSS навешано и при перемещение это все дергается и процессор к тому же грузит хорошо. Делал dispaly="none" перед перемещением и display="block" при отпускание кнопки мыши, перемещение работает все ок, процессор вообще не грузит, объект появляется в нужных координатах при отпускания кнопки мыши...но вот проблема в том что при таком методе не видно что двигаешь, так как объект полностью пропадает, как мне можно это дело решить, кто может помочь? :help:
|
Вам это нужно, наверное:
http://javascript.ru/ui/draganddrop#...obekt-perenosa |
Спасибо, помогло. Теперь работает как часы. У меня еще вопрос есть...
Я делаю модальное окно, перемещать его я могу, но вот как растягивать его не понимаю, вернее не знаю как навесить события по четырем краям объекта, плюс еще углы...вот как можно это реализовать? |
Цитата:
далее создаёте 4 картинки, присваиваете им абсолютное позиционирование и раскидываете по 4м углам с помощью css. (св-ва top, left). далее просто назначаете обработчики mounsedown (старт ресайза) и mouseup (стоп ресайза). |
Интересная мысль., возьму на вооружения...а без картинок ни как? Я вот тут тоже придумал одну вещь...что если написать скрипт который будет обрабатывать положения курсора относительно объекта при срабатывания события, тем самым можно вычислить на каком крае объекта находиться курсор и далее уже принимать решения куда растягивать объект...как думаете такое будет работать?
|
Нашел одно узкое место в своем скрипте по созданию объекта и его позиционирование на экране
function createShellWindow(width,height,text){ var frame = document.createElement('div'); frame.className = 'framer'; frame.style.width = width + 'px'; frame.style.height = height + 'px'; var header = document.createElement('div'); header.className = 'header'; header.onmousedown = function(){ moveObject(event,this.parentNode); } var title = document.createElement('div'); title.className = 'title-window'; title.innerText = text; header.appendChild(title); frame.appendChild(header); var close = document.createElement('span'); close.className = 'button'; close.innerText = 'x'; close.onclick = function(){ document.body.removeChild(frame); } frame.appendChild(close); var body = document.createElement('div'); body.className = 'bodyer'; body.style.width = (width - 6) + 'px'; body.style.height = (height - 24) + 'px'; frame.appendChild(body); document.body.appendChild(frame); // позиционируем объект по середине экрана pw=window.innerWidth; ph=window.innerHeight; ew=frame.clientWidth; eh=frame.clientHeight; frame.style.top=Math.floor(ph/2)-(eh/2)+'px'; frame.style.left=Math.floor(pw/2)-(ew/2)+'px'; }; Так вот если убрать позиционирование объекта из функции и потом быстро перемещать этот объект по экрану то нагрузка на процессор падает порядком на 10-15% по сравнению с теми действиями при включенном позиционирование... не ужели при перемещения объекта этот код тоже все время отрабатывается? :blink: PS. Понял в чем дело...это не из за позиционирование вовсе, так происходит когда передвигаемый объект попадает на участки другого объекта оказывается. |
Цитата:
отличный туториал по этой теме |
Часовой пояс GMT +3, время: 07:01. |