ژستهای لمسی روی انگشت و قلم. هر نمونه یک دکمهٔ معادل مرئی دارد و با کیبورد هم کار میکند؛ روی موبایل یا شبیهساز لمسی امتحان کنید.
کشیدن در جهت منطقی؛ کشیدن عمود بر آن اسکرول میماند. فاصله یا سرعت کافی است.
بهسمت inline-start بکشید. حذف همیشه با دکمهٔ سطر هم ممکن است.
نگهداشتن 500ms بدون جابهجایی بیش از 8px. رها کردن زودتر ضربهٔ عادی است.
کارت را نگه دارید؛ معادل: ContextMenu یا Shift+F10 یا دکمهٔ «گزینهها».
فقط وقتی فهرست در ابتدا (scrollTop صفر) است و فقط با لمس/قلم. ماوس عمداً ژست ندارد.
با لمس بکشید؛ معادل: Alt+↓ روی فهرست یا دکمهٔ «بازخوانی».
رفتار پایهٔ گالری/نمایشگر تصویر. با تم یا محصول خاموش نمیشود؛ فقط از سیاست صریح gallery قابلتنظیم است.
با دو انگشت بزرگنمایی و بچرخانید؛ Escape در حین ژست لغو میکند.
100٪، 0°
کیبورد: + − 0 R Shift+R · تاچپد: Ctrl + چرخ
import { usePinchRotate } from '@tokapps/gestures';function Viewer({ src }: { src: string }) { const g = usePinchRotate<HTMLDivElement>({ labels: { zoomIn: 'بزرگنمایی', zoomOut: 'کوچکنمایی', rotateCw: 'چرخش ساعتگرد', rotateCcw: 'چرخش پادساعتگرد', reset: 'بازنشانی نما' }, maxScale: 4, rotateStepDeg: 90, }); return ( <> <div ref={g.ref} {...g.bind} tabIndex={0} aria-label="نمایشگر تصویر" style={{ ...g.bind.style, overflow: 'hidden' }}> <img src={src} alt="" style={{ transform: g.transform }} /> </div> {(['zoomIn', 'zoomOut', 'rotateCw', 'rotateCcw', 'reset'] as const).map((k) => ( <button key={k} {...g.getControlProps(k)} /> ))} <p role="status">{g.announcement}</p> </> );}حداقل هدف لمسی کپی کد است (کپی کد). دکمههای جایگزین همین اندازهاند. کپی کد را فقط روی سطح لازم بگذارید.
| ژست | مقدار | دلیل |
|---|---|---|
| سوایپ افقی | کپی کد | اسکرول عمودی آزاد میماند |
| سوایپ عمودی | کپی کد | اسکرول افقی آزاد میماند |
| pinch / rotate | کپی کد | مرورگر نباید صفحه را بزرگ یا اسکرول کند |
| بازخوانی | کپی کد | اسکرول عادی؛ فقط تداخل با مرورگر مهار میشود |
/* فقط روی سطح ژستدار، نه کل صفحه */.viewer { touch-action: none; } /* pinch / rotate (usePinchRotate) */.row { touch-action: pan-y; } /* سوایپ افقی؛ اسکرول عمودی آزاد */.list { overscroll-behavior: contain; } /* بازخوانی؛ جلوگیری از تداخل با مرورگر */