fix(web): в зуме стрелки панорамируют фото
Стрелки влево/вправо переключают фото только без зума; в зуме они двигают изображение, как и перетаскивание мышью.
This commit is contained in:
@@ -539,15 +539,39 @@
|
||||
return;
|
||||
}
|
||||
if (zoomed) {
|
||||
// В зуме стрелки переключают фото, а панорамирование — мышью.
|
||||
if (ev.key === 'ArrowLeft') prev();
|
||||
else if (ev.key === 'ArrowRight') next();
|
||||
// В зуме стрелки панорамируют фото, а не переключают его.
|
||||
panByKey(ev);
|
||||
return;
|
||||
}
|
||||
if (ev.key === 'ArrowLeft') prev();
|
||||
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) {
|
||||
touchX = ev.changedTouches[0].clientX;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user