JavaScript — Introduktion genom exempel

13.5 Ändra storlek

Detta exempel bygger vidare på exempel 13.4 del b, där man kan dra runt olika rutor med bilder. Det tillägg som görs här är att man nu kan ändra storlek på elementen och därmed förstora eller förminska bilderna. Det kommer också ske med pointer events, så det blir här en kombination av olika pekaroperationer. Storleksförändringen kan göras på tre olika sätt:

20 min.

Sammanfattning

Dubbelklick hanteras i funktionen clickBox på samma sätt som det visades i exempel 13.4 del a. Markering av elementet görs genom att lägga till en klass kallad marked, som dels ger en visuell feedback och dels används för att sedan i pointerStart detektera att elementet är markerat.

I pointerStart kontrolleras först om två pekare används. I så fall ska en storleksförändring med pinch/spread göras och i händelselyssnaren för pointermove används funktionen pinchSpread. Annars är det en pekare och då kontrolleras om skifttangenten är nedtryckt eller om elementet är markerat. I så fall ska en storleksförändring göras och i händelselyssnaren för pointermove används funktionen pointerSize. Annars ska elementet förflyttas, då det dras och i händelselyssnaren för pointermove används funktionen pointerMove. Det anropas alltså olika funktioner på händelsen pointermove, beroende på vilken gest som detekterats.

Funktionen pointerMove

Denna funktion förflyttar elementet på exakt samma sätt som i exempel 13.4 del b, vilket i sin tur byggde på exempel 13.2.

Funktionen pointerSize

Denna funktion tar fram ett nytt värde för elementets bredd och lägger in det i style.width. Man kan också ta fram en ny höjd på samma sätt och lägga in det i style.height, men i detta fall ska höjden vara auto (vilkent redan är inlagt i CSS-koden), så att bilden behåller sina propotioner och höjden bestäms automatiskt.

Funktionen pinchSpread

Här beräknas avstånd mellan pekarna och det avgörs om det är gesten pinch eller spread på samma sätt som i exempel 13.4 del e. Storleken kommer då att minskas eller ökas och nytt värde läggs in i style.width. För att elementet ska vara centrerat, justeras style.left och style.top med hälften av storleksförändringen.

Egna övningar

Ingen övning i detta exempel.