Koristeći JavuScript i DOM možemo dosta poboljšati interaktivnost stranice. Korisnik može sam prilagoditi sadržaj stranice svojim potrebama. Jedna od takvih prilagodbi su drag and drop okviri. Oni omogućavaju grupiranje informacija, bolju raspodjelu ili prilagodbu izbornika. Ove informacije ćemo grupirati tako da korisnik sam može pomjerati i raspoređivati okvire koji mu odgovaraju.
Ovdje se stvara mnogo problema prilikom kodiranja i nije najjednostavniji zadatak. Moramo prvo riješiti nekoliko osnovnih problema te zapisati njihova rješenja. Više jednostavnih problema koje riješimo donijet će nam rješenje našega problema. Prvo trebamo riješiti problem kako uhvatiti poziciju miša na ekranu, tj. njegove koordinate. Nakon toga trebamo dobiti informaciju je li korisnik pritisnuo tipku na mišu i ako da koju. Kada korisnik pritisne tipku na mišu moramo imati informaciju je li kliknuo na objekt koji se može micati. Ako korisnik vuče objekt sa pritisnutom tipkom moramo to prikazati. Tek na kraju kada korisnik ispusti objekt zapisujemo gdje ga je ispustio i tu ga moramo premjestiti.
Ovdje je kao što vidite mnogo problema kojima moramo naći programsko rješenje. JavaScript nam omogućava lako dobivanje informacija o objektima na Internet stranici i olakšava manipulaciju tim objektima. Prvo ćemo napisati JavaScript dio pa objasniti osnovne dijelove na koje treba posebno obratiti pažnju. U head dio kopirajte sljedeće (ctrl+a, ctrl+c):
Pri kraju koda imamo tri reda koda od kojih sve počinje.
Dijelovi document.onmousemove, document.onmousedown i document.onmouseup su globalne funkcije koje se u preglednicima stalno provjeravaju. Događajima smo dodijelili naše funkcije i upravo okidanje tih događaja poziva naše funkcije da se izvrše. Kada korisnik pomjeri miš poziva se funkcija mouseMove. Kada korisnik pritisne tipku na mišu poziva se mouseDown, a kada je pusti izvršava se funkcija mouseUp. U mouseMove funkciji imamo sljedeći dio koda:
Ovaj dio hvata događaj (event) za IE i Firefox. Ako skriptu otvara IE on će zanemariti dio ev, a ako skriptu otvara Firefox onda će biti zanemaren window.event dio. Za sada smo uhvatili pomicanje miša i predali ga funkcijama na izvršavanje. Nakon detektiranja događaja moramo dobiti koordinate miša. Sada koristimo mouseCoords(ev) funkciju koja nam vraća trenutne koordinate pokazivača miša.
Kada kliknemo na neki objekt relativne koordinate miša spremimo u varijablu mouseOffset. Da bi dobili relativne koordinate koristimo funkciju getPosition(ev). Trenutno imamo koordinate gdje smo kliknuli spremljene u varijablu. Ako npr. kliknemo na koordinate (100px, 100px), i onda pomjerimo miš na koordinate (110px, 100px), onda znamo da objekt trebamo samo pomjeriti za 10px u Y smjeru. Samo na postojeće koordinate objekta dodamo razliku X2 i X1 te Y2 i Y1 koordinata. Pošto se ovo izvršava uvijek kada pomjerimo miš ustvari smo dobili pomjeranje objekta.
Za sada možemo pomjerati objekt po ekranu bez ikakvih ograničenja isto kao što možemo pomjerati prozore aplikacija po windows desktop-u. Moramo napraviti ograničenje tako da pri ispuštanju objekta provjerimo može li objekt biti tu spušten. Ako se objekt može tu ispustiti onda napravimo odgovarajuću akciju. Ovdje samo dodatno provjerimo nalazi li se miš iznad objekta u koji se smije ispustiti objekt. Jednako kao što provjeravamo nalazi li se miš iznad objekta koji smijemo nositi.
Ovo bi bili glavni dijelovi koji rješavaju 90% svih problema. Ostale funkcije pružaju podršku i imaju ulogu pomoćnih funkcija. Jedini dio koji ćete koristiti i mijenjati u ovoj skripti je dio koji se nalazi unutar window.onload = function(){ …}. Ovdje jednostavno dodajte ID div elemenata u kojima se nalaze vaši objekti. Mi imamo dva kontejnera sa objektima pa smo dodali:
Ostaje nam još napraviti dio koji ide u body dio, tj. ono što će korisnik nositi. Taj dio u našem slučaju izgleda ovako:


Sada je kompletna stranica spremna i funkcionalna. Trebamo još dodijeliti CSS našim div elementima da bi imali ljepši pregled. Unutar head dijela dodajte sljedeći kod:
Sada naši elementi imaju i funkcionalnost i preglednost. Ako dodate još kontejnera nemojte zaboraviti dodati ih i u skriptu inače vam novi kontejneri neće raditi. Za kraj nam ostaje još da vidimo kako sve ovo što smo napisali radi u praksi.
|
Koristite mis za pomicanje
Koristite mis za pomicanje
Koristite slike ako zelite
![]() Koristite mis za pomicanje
|
Osim teksta stavite bilo sta u div element
Osim teksta stavite bilo sta u div element
![]() Osim teksta stavite bilo sta u div element
|
| Autor: Vedran | Datum objave: 10.10.2008 |
KOMENTARI:
Andrej svaka cast!bas sam to trebao.14.10.2008 vedran Drago nam je što vam se sviđa i mislimo da će ovaj kod i drugima pomoći.14.10.2008 |
Samo registrirani korisnici mogu komentirati.