reduce zoom transition time
This commit is contained in:
@@ -9,7 +9,7 @@
|
||||
let zoomLevel = $state(1.0); // Absolute scale (e.g. 0.1 to 3.0)
|
||||
|
||||
let isDragging = $state(false);
|
||||
let isChangingZoom = $state(false); // New flag to disable animation during slider/click zoom
|
||||
let isChangingZoom = $state(false); // New flag to enable animation during programmatic jumps
|
||||
let startX = 0;
|
||||
let startY = 0;
|
||||
let translateX = $state(0);
|
||||
@@ -58,13 +58,13 @@
|
||||
translateY = 0;
|
||||
lastTranslateX = 0;
|
||||
lastTranslateY = 0;
|
||||
setTimeout(() => { isChangingZoom = false; }, 250);
|
||||
setTimeout(() => { isChangingZoom = false; }, 150);
|
||||
}
|
||||
|
||||
function zoomTo(newScale: number) {
|
||||
isChangingZoom = true;
|
||||
zoomLevel = newScale;
|
||||
setTimeout(() => { isChangingZoom = false; }, 250);
|
||||
setTimeout(() => { isChangingZoom = false; }, 150);
|
||||
}
|
||||
|
||||
function handleImageClick(e: MouseEvent) {
|
||||
@@ -96,7 +96,7 @@
|
||||
|
||||
lastTranslateX = translateX;
|
||||
lastTranslateY = translateY;
|
||||
setTimeout(() => { isChangingZoom = false; }, 250);
|
||||
setTimeout(() => { isChangingZoom = false; }, 150);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -193,8 +193,6 @@
|
||||
step="0.001"
|
||||
bind:value={zoomLevel}
|
||||
onclick={(e) => e.stopPropagation()}
|
||||
onmousedown={() => { isChangingZoom = true; }}
|
||||
onmouseup={() => { isChangingZoom = false; }}
|
||||
oninput={() => {
|
||||
if (zoomLevel <= baseScale + 0.001) {
|
||||
translateX = 0;
|
||||
@@ -402,6 +400,6 @@
|
||||
}
|
||||
|
||||
.full-image.animate {
|
||||
transition: transform 0.25s cubic-bezier(0.4, 0, 0.2, 1);
|
||||
transition: transform 0.15s cubic-bezier(0.4, 0, 0.2, 1);
|
||||
}
|
||||
</style>
|
||||
|
||||
Reference in New Issue
Block a user