Przeciąganie elementów

jaconon

Wskazówka przedstawia skrypt, za pomocą którego można na stronie, przeciągać różne elementy graficzne i nie tylko. Tekst powstał na podstawie artykułu z KS-Eksperta.

Główny kod skryptu:

<script type="text/javascript">

var MyOB,Mzindex=0

function Inicjuj(ile)
{
   for(var i=1; i<=ile; i++) eval('new MyDragDrop("warstwa'+i+'")\r\n')
 
   document.onmousemove=DragFun
   document.onmouseup=DropFun
}

function DragFun(e)  //przesunięcie
{
  e=e||event
  if(MyOB)  //jesli mamy obiekt
    {
       MyOB.left=(e.pageX?e.pageX:event.clientX+document.body.scrollLeft)-MyOB.X
       MyOB.top=(e.pageY?e.pageY:event.clientY+document.body.scrollTop)-MyOB.Y
    }
    return false;
}

function DropFun()  //puszczenie myszki
{
   MyOB=null  //wybrany obiekt - pusty
}

function MyDragDrop(w)
{
   this.id=document.getElementById(w)
   this.id.onmousedown=CDown
   
   function CDown(e)
   {
     MyOB=this.style
     MyOB.zIndex=++Mzindex
     e=e||event
 
     //w X i Y zapamiętujemy pozycję kursora względem początku WARSTWY
     MyOB.X=e.pageX?e.pageX-(this.offsetLeft):event.offsetX
     MyOB.Y=e.pageY?e.pageY-(this.offsetTop):event.offsetY
     return false
   }
}

onload = function()
{
  Inicjuj(1); // ilość warstw, na których ma działać skrypt
}

</script>

Elementom `<div>` należy nadać kolejne wartości atrybutu Id: "warstwa1", "warstwa2", itd.

FAQ

5 komentarzy

Działa we wszystkich przeglądarkach jakie mam: Firefox 1.0.1, Konqueror 3.4.0, Mozilla 1.7.5

A ja mam Firefox 2.0 i Operę 9 i nie działa.

ten kod działa na firefoksie i ie, tylko że mądrzy użytkownicy go ulepszyli. pierwotna wersja działała na tych przeglądarkach. myślę że na operze też by poszła.

to na czym działa? są jeszcze jakieś przeglądarki? :P

Taka mała uwaga, ten kod nie działa na Firefoksie oraz Operze...