6.4 Muspekarens position
Muspekarens position kan man avläsa ur event
-objektet för alla mushändelser. Det finns ett antal olika uppsättningar koordinater relativa elementet, dokumentet eller fönstret. Exemplet består av två delar:
- Demo av olika värden för X och Y som finns i event-objektet.
- Ett exempel där drop zone är ett element som omger flera andra element. De inre elementen kan dras och flyttas till nya positioner inom det yttre elementet (drop zone).
10 min.
Sammanfattning
- Koordinaterna finns i
event
-objektet för musen och kan avläsas för alla händelser för musen, t.ex.click
,mousedown
,dragstart
,dragover
ochdrop
. - Med
e.offsetX
oche.offsetY
får man koordinater inom det element som händelsen är kopplad till. I funktionen för dragstart är det alltså inom det element som dras och i funktionen för drop zone är det inom det element som man kan släppa på. - Koordinaterna i
event
-objektet är endast läsbara. Vill man förändra ett elements position, får man lägga in nya värden ielem.style.left
ochelem.style.top
. Det är viktigt att då inte glömma att också lägga på enhetenpx
.
Egna övningar
Här följer ett förslag på några egna övningar. Öppna filen test.html och test.js och utför nedanstående. Resultatet ska bli ett program där du kan dra djur från "knapparna" och placera dem på valfri plats på den stora ytan.
- I
init
-funktionen går du igenom allaimg
-taggar inom elementet medid="animalBtns"
och ser till att de är dragbara samt lägger på händelsehanterare så att funktionendragStart
anropas på händelsendragstart
. - I funktionen
dropZone
ska du för händelsendrop
lägga till en nyimg
-tagg med det djur som dragits.- Lägg alltså till i
innerHTML
med+=
en textsträng med en nyimg
-tagg, därsrc
är hämtat från det element som dragits.
- Lägg alltså till i
- Ta sedan fram en referens till den
img
-tagg som lagts in.- Du kan utgå från
dropElem
och användaquerySelector
med"img:last-of-type"
.
- Du kan utgå från
- Lägg slutligen in
x
ochy
som nya värden påleft
ochtop
förimg
-taggen. Glöm inte enheten"px"
.