fix(web): в зуме стрелки панорамируют фото
Стрелки влево/вправо переключают фото только без зума; в зуме они двигают изображение, как и перетаскивание мышью.
This commit is contained in:
@@ -539,15 +539,39 @@
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (zoomed) {
|
if (zoomed) {
|
||||||
// В зуме стрелки переключают фото, а панорамирование — мышью.
|
// В зуме стрелки панорамируют фото, а не переключают его.
|
||||||
if (ev.key === 'ArrowLeft') prev();
|
panByKey(ev);
|
||||||
else if (ev.key === 'ArrowRight') next();
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (ev.key === 'ArrowLeft') prev();
|
if (ev.key === 'ArrowLeft') prev();
|
||||||
else if (ev.key === 'ArrowRight') next();
|
else if (ev.key === 'ArrowRight') next();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Панорамирование зума стрелками. */
|
||||||
|
function panByKey(ev: KeyboardEvent) {
|
||||||
|
const el = scroller;
|
||||||
|
if (!el) return;
|
||||||
|
const step = Math.max(60, Math.round(el.clientWidth / 8));
|
||||||
|
switch (ev.key) {
|
||||||
|
case 'ArrowLeft':
|
||||||
|
el.scrollLeft -= step;
|
||||||
|
break;
|
||||||
|
case 'ArrowRight':
|
||||||
|
el.scrollLeft += step;
|
||||||
|
break;
|
||||||
|
case 'ArrowUp':
|
||||||
|
el.scrollTop -= step;
|
||||||
|
break;
|
||||||
|
case 'ArrowDown':
|
||||||
|
el.scrollTop += step;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ev.preventDefault();
|
||||||
|
scheduleViewport();
|
||||||
|
}
|
||||||
|
|
||||||
function onTouchStart(ev: TouchEvent) {
|
function onTouchStart(ev: TouchEvent) {
|
||||||
touchX = ev.changedTouches[0].clientX;
|
touchX = ev.changedTouches[0].clientX;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user