میکرواینتراکشن چیست؟ طراحی State، Feedback و Motion

دکمه سبز شد، تیک موفقیت پخش شد و کاربر صفحه را بست؛ اما درخواست در سرور شکست خورده بود. این فقط یک انیمیشن بد نیست: قرارداد نادرستی میان وضعیت واقعی سیستم و چیزی است که رابط به کاربر وعده می‌دهد. نتیجه می‌تواند سفارش تکراری، پرداخت نامعلوم، فرم گم‌شده یا بی‌اعتمادی باشد.

میکرواینتراکشن خوب از «افکت جذاب» شروع نمی‌شود. ابتدا Task، State، منبع حقیقت، خطا و اقدام بعدی را مشخص می‌کند؛ سپس Feedback متنی، بصری، لمسی یا حرکتی را به آن می‌افزاید. در این راهنما، تعامل خرد را از Trigger تا State machine، Accessibility، Motion، Performance، سنجش و تحویل به Design system طراحی می‌کنیم—با مثال‌های فروشگاه، فرم، OTP و پرداخت برای کاربر ایرانی.

میکرواینتراکشن چیست و چه چیزی نیست؟

Microinteraction لحظه‌ای محدود در رابط است که یک Trigger را می‌گیرد، طبق Rule وضعیت را تغییر می‌دهد، نتیجه را بازخورد می‌دهد و رفتار تکرار یا حالت‌های بعدی را مدیریت می‌کند. واحد طراحی آن «یک Task کوچک با Outcome روشن» است، نه تعداد Keyframeها.

مفهومنقشمثال
Microinteractionچرخه کامل Trigger→State→Feedback→Recoveryذخیره آدرس با Pending، Success و Error
Animationنمایش تغییر در طول زمانFade پیام یا حرکت Progress
Transitionرابط بصری میان دو Stateباز و بسته‌شدن Accordion
Feedbackاطلاع از دریافت، وضعیت یا نتیجه«سفارش ثبت شد» یا «اتصال قطع است»
Affordanceسرنخ اینکه کنترل چه کاری می‌کندظاهر و Label دکمه «پرداخت»
Componentواحد قابل‌استفاده مجدد UIButton، Switch، Toast یا Progress

Hover زیبا به‌تنهایی Microinteraction کامل نیست؛ چون روی Touch وجود ندارد، ممکن است State یا Outcome نداشته باشد و برای Keyboard نیز دیده نشود. در مقابل، یک پیام ثابت «ذخیره شد» بدون Motion می‌تواند تعامل خرد بسیار مؤثری باشد.

کالبد میکرواینتراکشن؛ از چهار جزء تا State machine

مدل کلاسیک Trigger، Rules، Feedback و Loops/Modes نقطه شروع خوبی است؛ برای محصول واقعی باید Source of truth، Failure و Recovery را نیز صریح کنیم.

بخشپرسش طراحیخروجی لازم
Triggerکاربر، سیستم، زمان یا Event آغازگر است؟Click/Enter/Change/Network/Timer
Preconditionچه شرطی باید برقرار باشد؟مجوز، داده معتبر، اتصال یا موجودی
Rulesکدام Transition مجاز است؟State diagram و Guard
Source of truthClient، Server یا Provider نتیجه را تأیید می‌کند؟Acknowledgement contract
Feedbackکاربر چه چیزی را چه زمانی بفهمد؟Copy، Icon، Motion، Sound/Haptic
FailureTimeout، Offline، Conflict یا خطای Validation چه می‌شود؟Error state قابل‌تشخیص
RecoveryRetry، Undo، Edit، Resume یا Support کدام است؟اقدام بعدی بدون بن‌بست
Loops/Modesتکرار، Preference یا Context رفتار را عوض می‌کند؟Rate limit، persistence و reset

State را پیش از Motion بنویسید

Idle → Ready → Pressed → Pending
Pending → Success
Pending → ValidationError | NetworkError | Timeout | Conflict
Error → Edit | Retry | Cancel
Success → Undo (اگر عمل برگشت‌پذیر است)

Hover، Focus و Pressed حالت‌های ورودی‌اند؛ Pending، Success و Error وضعیت عملیات‌اند. آن‌ها را یکی نکنید. تغییر رنگ در لحظه Click فقط می‌گوید کنترل فعال شد، نه اینکه سرور نتیجه را پذیرفت.

Feedback contract؛ رابط دقیقاً چه وعده‌ای می‌دهد؟

برای هر Transition یک قرارداد قابل‌آزمون بنویسید. Feedback باید سه پرسش را جواب دهد: «درخواست من دریافت شد؟»، «اکنون چه وضعیتی دارد؟» و «بعد چه کنم؟»

Stateپیام درستکنترلخطای رایج
Pressedبازخورد فوری فشردنFocus حفظ شودنمایش Success زودهنگام
Pending«در حال ثبت…»جلوگیری منطقی از Duplicate؛ Cancel اگر ممکنSpinner بی‌متن و بی‌نهایت
SuccessOutcome و شناسه قابل‌استنادNext step یا UndoToast دوثانیه‌ای تنها
Validation errorمحل، علت و روش اصلاحFocus/summary مناسبفقط کادر قرمز
Network/timeoutوضعیت معلوم یا نامعلومRetry امن، حفظ ورودی«ناموفق» با پاک‌کردن فرم
Conflictچه چیزی تغییر کرده است؟Review/Merge/ReloadOverwrite خاموش

Success را به Acknowledgement معتبر وصل کنید. در عملیات چندمرحله‌ای، «درخواست دریافت شد» را از «پردازش کامل شد» جدا کنید. این تمایز در پرداخت، ارسال فایل، ثبت سفارش و صدور گزارش حیاتی است.

اولویت ارزش؛ وضوح و کنترل پیش از Delight

  1. Correctness: نمایش وضعیت واقعی و جلوگیری از اثر تکراری؛
  2. Comprehension: فهم اینکه چه اتفاقی افتاده؛
  3. Recovery: خروج از خطا بدون از دست‌دادن کار؛
  4. Orientation: حفظ جای کاربر و رابطه علت/معلول؛
  5. Efficiency: کاهش انتظار ادراکی یا گام اضافه؛
  6. Brand/Delight: شخصیت و لذت، مشروط به پنج مورد قبل.

دکمه‌ای که برای جلب توجه مدام می‌لرزد ممکن است Conversion کوتاه‌مدت بسازد، اما کنترل کاربر و توجه او را می‌گیرد. اصول گسترده‌تر انتخاب اخلاقی در راهنمای طراحی اخلاقی و حذف Dark pattern بررسی شده است.

الگوهای مهم و Acceptance آن‌ها

ارسال فرم، ورود و OTP

  • Validation را در زمان مناسب انجام دهید؛ خطا قبل از تعامل کاربر فریاد نزند.
  • هنگام Submit، Label به «در حال ارسال…» تغییر کند و مقدارها حفظ شوند.
  • Disabled ظاهری جای Idempotency یا کنترل سمت سرور را نمی‌گیرد.
  • خطا با متن، محل و پیشنهاد اصلاح بیاید؛ Color تنها کانال نباشد.
  • برای OTP، امکان Paste/Autofill، ارسال مجدد پس از Countdown واقعی و تغییر شماره وجود داشته باشد.
  • تأخیر SMS یا شبکه ایران به «کد اشتباه است» ترجمه نشود.

برای طراحی Message، Field، Error summary و آزمایش Outcome، راهنمای لندینگ، فرم و A/B test مکمل این بخش است.

سبد خرید و موجودی

افزودن خوش‌بینانه کالا می‌تواند رابط را سریع نشان دهد، اما Price، Stock و Variant باید با پاسخ سرور Reconcile شوند. اگر موجودی تغییر کرد، کالا را بی‌صدا حذف نکنید؛ تفاوت را توضیح دهید و گزینه جایگزین یا بازگشت بدهید. Animation پرواز تصویر به سبد، جای شمارنده متنی و وضعیت قابل‌خواندن را نمی‌گیرد.

پرداخت و Redirect

«بازگشت از درگاه» لزوماً Success نیست. رابط باید Pending verification، Paid، Failed، Cancelled و Unknown را جدا نمایش دهد. اگر Callback دیر رسید، شناسه سفارش و مسیر «بررسی دوباره وضعیت» بدهید؛ پرداخت مجدد را تا روشن‌شدن Idempotency و وضعیت تراکنش تحریک نکنید.

آپلود و پردازش طولانی

Spinner فقط وجود فعالیت را نشان می‌دهد. اگر اندازه کار معلوم است، Progress واقعی، مقدار ارسال‌شده و زمان تقریبی محتاطانه بهتر است. Upload از Server processing جداست؛ Cancel/Resume، Retry بخش شکست‌خورده و حفظ فایل انتخاب‌شده را طراحی کنید.

Toggle، Switch و Preference

State باید بدون اتکا به رنگ فهمیده و با Keyboard تغییر کند. الگوی Button در WAI-ARIA APG تفاوت Button معمولی و Toggle با aria-pressed را توضیح می‌دهد. برای Preference ذخیره‌شونده، تغییر Control از تأیید ذخیره Server جدا باشد؛ اگر ذخیره شکست خورد State را Revert یا خطا را روشن کنید.

حذف، Undo و عملیات پرریسک

Confirm برای هر عمل، اصطکاک می‌سازد و کاربر به آن عادت می‌کند. عمل برگشت‌پذیر را می‌توان با Undo پایدار طراحی کرد؛ عمل مالی، حقوقی یا غیرقابل‌بازگشت به Review روشن نیاز دارد. Toast کوتاهی که تنها مسیر Undo است برای کاربر Keyboard، Screen reader یا فردی با توجه تقسیم‌شده قابل‌اعتماد نیست.

Optimistic UI یا Pessimistic UI؟

رویکردتناسبشرط ایمنی
OptimisticLike، Preference کم‌ریسک، تغییر محلی سریعRollback/Reconcile، نرخ خطای پایین، اثر قابل‌بازگشت
Pessimisticپرداخت، حذف حساس، تغییر دسترسیPending روشن و Timeout/Recovery
Stagedآپلود، سفارش، گزارشReceived→Processing→Completed با State مستقل

انتخاب را با Risk×Latency×Reversibility انجام دهید. Optimistic UI برای عملیات مالی فقط «حس سریع» نمی‌سازد؛ ممکن است واقعیت نادرست بسازد. همچنین Double-click باید در Client کنترل شود، اما تضمین عدم اثر تکراری در API و Transaction است.

دسترس‌پذیری؛ Feedback برای همه کانال‌ها

WCAG 2.2 الزامات مرتبطی برای Keyboard، Focus، Color، Motion، Target، Error و Status دارد. Compliance با افزودن ARIA بعد از طراحی حاصل نمی‌شود؛ HTML بومی، State درست و آزمون با فناوری کمکی مقدم‌اند.

ریسکRequirement طراحینمونه آزمون
Keyboardعملکرد با Tab/Enter/Space و Focus قابل‌دیدنمسیر کامل بدون Mouse
Screen readerName/Role/State و تغییر مهم قابل‌اعلانNVDA/VoiceOver روی Success/Error
Color/visionState با متن/شکل، Contrast کافیبدون رنگ نیز قابل‌تشخیص
Touch/motorTarget و فاصله مناسب، جایگزین DragTouch با Zoom و یک انگشت
CognitionCopy ثابت، زمان کافی، History/RecoveryResume پس از وقفه
Motion sensitivityReduced motion و حذف حرکت غیرضروریتنظیم OS روی Reduce

WCAG ۲.۲ در معیار ۲.۵.۸ حداقل Target را با استثناهای مشخص ۲۴×۲۴ CSS pixel می‌داند؛ ۴۴×۴۴ مربوط به معیار Enhanced سطح AAA است. عدد را از Context، تراکم و کاربران جدا نکنید. پوشش جامع‌تر در راهنمای طراحی فراگیر و WCAG آمده است.

Status message و Live region

راهنمای W3C برای Status Messages می‌گوید تغییرهایی مثل Success، Waiting، Progress یا Error باید بدون جابه‌جایی Focus برای فناوری کمکی قابل‌تشخیص باشند. role="status" برای اطلاع کم‌فوریت مناسب است؛ Alert برای وضعیت فوری و مهم است، نه هر Toast.

  • پیام را پیشاپیش در Live region قابل‌شناسایی قرار دهید و محتوایش را تغییر دهید؛
  • هر تغییر شمارنده یا کاراکتر را Announce نکنید؛ Noise نیز مانع است؛
  • Focus را برای Toast ندزدید؛ برای Dialog یا خطای بلوکه‌کننده، الگوی Focus جدا لازم است؛
  • اطلاعات حساس مثل OTP، شماره کارت یا متن خصوصی را بی‌دلیل Announce نکنید؛
  • پیام ناپدیدشونده تنها مدرک Success یا تنها مسیر Action نباشد.

Focus، Name، Role و State

از <button> برای Action و از Link برای Navigation استفاده کنید. Focus پس از بازشدن Dialog، حذف Item یا تغییر Context باید به مقصد منطقی برود. aria-expanded، aria-pressed، aria-selected و aria-busy باید واقعیت را بازتاب دهند؛ ARIA جای Event handling، Keyboard behavior یا HTML سالم را نمی‌گیرد.

Motion با معنا؛ نه زمان‌بندی جادویی

هیچ Duration جهانی برای همه کنترل‌ها، دستگاه‌ها و فاصله‌ها وجود ندارد. Motion token را براساس نوع تغییر، Distance، Complexity و امکان Interrupt تعریف کنید و با کاربران و دستگاه واقعی بسنجید.

ویژگیپرسشGuardrail
Purposeرابطه مکانی، تغییر State یا تأکید؟اگر حذف شد، Meaning از بین می‌رود؟
Durationتغییر کوچک است یا انتقال Context؟Action را بی‌دلیل Block نکند
Easingورود، خروج یا جابه‌جایی؟شتاب ناگهانی و Bounce بی‌هدف حذف
Distance/scaleچه میزان میدان دید حرکت می‌کند؟حرکت بزرگ Vestibular risk بیشتری دارد
Interruptکاربر وسط Motion چه می‌کند؟State نهایی قطعی و Input گم نشود
Reducedنسخه کم‌حرکت چیست؟Meaning با متن/Opacity/Instant state حفظ

prefers-reduced-motion یک Variant محصول است

ویژگی prefers-reduced-motion در MDN Preference سیستم‌عامل برای کم‌کردن حرکت غیرضروری را آشکار می‌کند. «Reduce» لزوماً به معنی خاموش‌کردن کور همه Transitionها نیست؛ حرکت بزرگ/Scale/Parallax را می‌توان با تغییر فوری، Dissolve یا Feedback متنی جایگزین کرد.

.feedback {
  transition: opacity 160ms ease, transform 160ms ease;
}

@media (prefers-reduced-motion: reduce) {
  .feedback {
    transition: opacity 80ms linear;
    transform: none;
  }
}

معیار ۲.۳.۳ WCAG برای Motion ناشی از Interaction امکان Disable را مطرح می‌کند مگر Essential باشد. همچنین Pause, Stop, Hide برای Motion یا Auto-update خودکار و ماندگار شرط‌های جدا دارد. Flash سریع می‌تواند خطر جسمی داشته باشد و با «دکمه توقف بعدی» جبران نمی‌شود.

میکرواینتراکشن فارسی و RTL

RTL فقط Flip کردن CSS نیست. جهت حرکت باید معنای Information architecture را دنبال کند: Back/Forward، Previous/Next و ورود Pane را با ساختار واقعی و الگوی پلتفرم تست کنید. Icon جهت‌دار، Chevron، Progress step و Swipe به بازبینی نیاز دارند؛ Iconهای غیرجهتی مثل Play یا Download لزوماً Mirror نمی‌شوند.

  • متن فارسی با عدد، درصد، کد رهگیری، URL و مبلغ Mixed-direction را در Toast و Button آزمون کنید؛
  • «۱۲۵٬۰۰۰ تومان» و «۱۲۵٬۰۰۰ ریال» را با Label کامل، نه صرفاً رنگ، متمایز کنید؛
  • ی/ک عربی و فارسی، نیم‌فاصله و ارقام را در Validation بی‌دلیل خطا نگیرید؛
  • پیام کوتاه را مبهم نکنید: «انجام شد» کمتر از «آدرس ذخیره شد» اطلاع می‌دهد؛
  • روی فونت فارسی، Line-height، Zoom و شکستن متن Button/Toast تست کنید؛
  • شبکه کند، VPN، قطع‌و‌وصل، درگاه و تأخیر پیامک را سناریوی اصلی بدانید، نه Edge case.

برای قرارداد Bidi، متن، عدد، فونت و QA محلی، به راهنمای طراحی سایت فارسی و RTL رجوع کنید.

Performance؛ Motion روان فقط FPS نیست

Animation می‌تواند Main thread را با Style/Layout/Paint درگیر و پاسخ به Input را کند کند. راهنمای انیمیشن پربازده در web.dev توصیه می‌کند پیش از Animate کردن Propertyهای دیگر، اثر آن‌ها بر Pipeline سنجیده شود و در صورت امکان از transform و opacity استفاده شود. این یک تضمین جهانی نیست؛ Layer، Memory، اندازه Element و Device مهم‌اند و will-change نیز نباید سراسری و دائمی شود.

بودجه و آزمون Performance

  • Input-to-visual feedback و INP مسیر را روی دستگاه میان‌رده/ضعیف اندازه بگیرید؛
  • Long task، Layout/Paint، dropped frame و Memory/GPU layer را ثبت کنید؛
  • Animation هم‌زمان با Fetch، Validation، Hydration و List update آزموده شود؛
  • State نهایی با قطع Animation، Background tab یا navigation درست بماند؛
  • Low-power، Data saver، Zoom، RTL و Reduced motion در ماتریس QA باشند؛
  • Skeleton باید شکل محتوا را صادقانه نشان دهد و Layout shift نسازد.

راهنمای سرعت سایت، UX و تبدیل مدل گسترده‌تری برای Performance budget و سنجش Journey دارد.

میکرواینتراکشن و SEO؛ ادعای مستقیم نسازید

گوگل «انیمیشن لایک» یا کاهش Bounce در Analytics شما را به‌عنوان میانبر رتبه تضمین نمی‌کند. راهنمای رسمی Page Experience گوگل می‌گوید Core Web Vitals در سیستم‌های رتبه‌بندی استفاده می‌شوند، اما امتیاز خوب تضمین رتبه نیست و Page experience نیز یک Signal واحد ندارد.

پس Microinteraction را برای Task success و وضوح بسازید. اثر SEO محتمل، غیرمستقیم و مشروط است: اگر JavaScript سنگین INP را خراب کند، محتوا را پنهان نگه دارد، Link را به Button جعلی تبدیل کند یا Layout shift بسازد، تجربه و Eligibility آسیب می‌بینند. Dwell time و Bounce را بدون طراحی علّی به «سیگنال رتبه» تبدیل نکنید.

امنیت و اخلاق؛ UI کنترل امنیتی نیست

ریسکظاهر فریبندهکنترل واقعی
Double submitDisable دکمهIdempotency/Transaction سمت سرور
Permissionمخفی‌کردن ControlAuthorization سمت سرور
Passwordنوار سبز StrengthPolicy، breached-password check، MFA و storage امن
Paymentتیک پس از RedirectVerification و reconciliation سرور
ConsentAnimation پررنگ Acceptانتخاب هم‌سطح، informed و قابل‌لغو
DeleteToast «حذف شد»Policy، audit، retention و restore/undo

Confetti، vibration، streak و Variable reward می‌توانند برای بعضی محصولات مناسب باشند، اما نباید Shame، Urgency جعلی، Consent نامتوازن یا استفاده اجباری بسازند. Motion brand asset است، نه مجوز دستکاری.

Interaction spec قابل‌تحویل

به‌جای تحویل ویدیوی زیبا، Specification زیر را برای هر Pattern ثبت کنید:

فیلدنمونه برای «ذخیره آدرس»
User jobثبت آدرس بدون ورود دوباره
Trigger/inputButton، Enter؛ داده معتبر
StatesIdle/Invalid/Pending/Saved/Error/Conflict
Source of truthپاسخ API با version
Copy«در حال ذخیره…»، «آدرس ذخیره شد»
SemanticsButton بومی، status کم‌فوریت، Error مرتبط
Focusپس از Success روی Button؛ در Error به summary/field منطقی
MotionFade کوچک؛ Variant کم‌حرکت
Failure/recoveryورودی حفظ، Retry/Edit، Conflict review
Telemetrysubmit_received/saved/failed/retry بدون PII
AcceptanceKeyboard/AT/RTL/offline/slow/reduced/performance

برای وصل‌کردن Task، Acceptance و QA کل صفحه، راهنمای طراحی کاربرپسند از Task تا Usability را ببینید.

Motion و Feedback در Design system

Token فقط Duration و Easing نیست. System باید State، Semantic، Copy، Motion variant، Focus، reduced-motion behavior و Event telemetry را به Component وصل کند.

  • Primitive: duration، easing، distance، opacity؛
  • Semantic: enter، exit، emphasis، state-change، reduced؛
  • Component: button-pending، toast-success، dialog-enter، progress؛
  • Pattern: submit، upload، delete/undo، payment verification؛
  • Governance: Owner، version، evidence، deprecation و regression.

Component نباید Business state را حدس بزند. API باید Pending/Success/Error/Conflict را قابل‌تفکیک کند و Product copy باید از Error code فنی جدا باشد.

سنجش؛ Engagement بیشتر الزاماً موفقیت نیست

لایهMetricتفسیر
OutcomeTask success، completion، correct stateآیا کار واقعاً انجام شد؟
EfficiencyTime/steps، duplicate actionآیا ابهام کم شد؟
RecoveryError recovery، retry success، abandonmentآیا خطا بن‌بست ساخت؟
AccessibilityKeyboard/AT completion، reduced-motion defectsچه کسی حذف شده است؟
PerformanceINP، long task، dropped frameآیا Feedback خودش مانع است؟
Trustunknown state، support contact، complaintآیا وعده رابط با واقعیت یکی است؟

Like count یا Hover event معیار ارزش عمومی نیست. Eventها را به State transition و Outcome وصل کنید و داده حساس را در متن Status/Telemetry نریزید. برای Production monitoring، راهنمای Observability وب‌سایت مسیر Signal تا SLO و Incident را توضیح می‌دهد.

پشته آزمون میکرواینتراکشن

  1. State/unit: Transitionهای مجاز، Timeout، Retry و Race؛
  2. Component: Name/Role/State، Keyboard، Focus و Reduced motion؛
  3. Integration: API error، offline، duplicate، stale response و conflict؛
  4. Visual/motion: RTL، Zoom، font load، frame و interruption؛
  5. Assistive technology: Screen reader، high contrast و switch/keyboard؛
  6. Usability: فهم State، confidence، recovery و زمان Task؛
  7. Production: outcome/error/retry/performance با Alert و rollback.

ماتریس سناریوهای شکست

سناریوانتظار
Double-click/Enterیک Outcome؛ Feedback پایدار
پاسخ دیر و خارج ترتیبState جدید با پاسخ قدیمی Overwrite نشود
Offline وسط کاروضعیت معلوم، ورودی حفظ، Retry امن
Navigation/refreshعملیات حساس قابل‌بازیابی یا هشدار روشن
Reduced motionMeaning و State بدون حرکت کامل
Screen readerیک Announcement مفید، بدون Noise
RTL + متن بلندجهت/Wrap/Focus/Target سالم
Low-end deviceInput responsive و State قطعی

مصاحبه و تست نباید فقط بپرسد «انیمیشن را دوست داشتید؟». از کاربر بخواهید نتیجه را توضیح دهد، خطا را بازیابی کند و وضعیت را پس از وقفه پیدا کند. پروتکل کامل در راهنمای تست کاربردپذیری آمده است.

Workflow تیم از Inventory تا Rollout

مرحلهکارخروجی
۱. Inventoryثبت Action، Toast، Loader، Toggle و MotionInteraction registry
۲. Riskمالی/داده/دسترس‌پذیری/خطا/تکراراولویت Critical journey
۳. ContractState، source، copy، recovery و semanticInteraction spec
۴. PrototypeDefault/Reduced/RTL/Error/SlowPrototype قابل‌آزمون
۵. BuildNative semantics، API contract و tokensComponent/Pattern
۶. VerifyAutomated + manual + AT + usability + performanceEvidence pack
۷. ReleaseCanary، telemetry، alert و rollbackProduction evidence
۸. GovernRegression، version و deprecationDesign-system lifecycle

چک‌لیست طراحی میکرواینتراکشن

  • Task و Outcome با یک جمله روشن‌اند؛
  • Trigger، Precondition و Source of truth ثبت شده‌اند؛
  • Idle/Focus/Pressed/Pending/Success/Error/Disabled طراحی شده‌اند؛
  • Success فقط پس از تأیید معتبر نمایش داده می‌شود؛
  • Unknown/Timeout/Offline از Failed قطعی جداست؛
  • Duplicate action در Client و Server کنترل می‌شود؛
  • ورودی در خطا حفظ و Recovery روشن است؛
  • Feedback متنی است و فقط به Color/Icon/Motion متکی نیست؛
  • Name/Role/State و Keyboard interaction درست‌اند؛
  • Focus پس از تغییر Context مقصد منطقی دارد؛
  • Status مهم برای فناوری کمکی قابل‌تشخیص است؛
  • Live region Noise یا افشای داده حساس نمی‌سازد؛
  • Reduced-motion variant معنای کامل دارد؛
  • Auto-motion، Flash، timeout و pause کنترل شده‌اند؛
  • Target، فاصله، Touch و جایگزین Drag آزموده شده‌اند؛
  • RTL، متن فارسی، عدد/تومان و Wrap سالم‌اند؛
  • Network کند، VPN، OTP و درگاه در سناریوها هستند؛
  • Layout/Paint/Long task/INP روی دستگاه واقعی سنجیده شده‌اند؛
  • Telemetry به Outcome وصل است، نه Vanity engagement؛
  • Pattern در Design system Owner و Regression دارد.

جمع‌بندی؛ یک سیستم کوچک، نه یک افکت کوچک

میکرواینتراکشن موفق رابط را «زنده‌تر» نمی‌کند؛ آن را صادق‌تر، قابل‌فهم‌تر و بازیابی‌پذیرتر می‌کند. Trigger و State machine، منبع حقیقت، Feedback، Semantic، Motion variant و Recovery باید یک قرارداد واحد باشند. اگر تیک Success پیش از Server می‌آید، Toast برای Screen reader نامرئی است یا Animation روی دستگاه ضعیف Input را Block می‌کند، زیبایی خروجی مسئله را حل نمی‌کند.

از Critical journey شروع کنید: پرداخت، Submit، Upload، Delete یا تغییر Preference. Stateها را بنویسید، خطا و شبکه ایران را شبیه‌سازی کنید، Default و Reduced motion را کنار هم بسازید و Outcome را در Production بسنجید. Delight وقتی ارزش دارد که Correctness، Accessibility و Control پیش از آن حل شده باشند.

سؤالات متداول میکرواینتراکشن

تفاوت میکرواینتراکشن و انیمیشن چیست؟

میکرواینتراکشن چرخه کامل یک Task یا تغییر State شامل Trigger، Rule، Feedback، Failure و Recovery است. Animation فقط یکی از روش‌های نمایش تغییر در طول زمان است. یک پیام متنی بدون حرکت می‌تواند Microinteraction کامل باشد و یک انیمیشن زیبا بدون State واقعی صرفاً تزئین باشد.

مدت مناسب انیمیشن میکرواینتراکشن چند میلی‌ثانیه است؟

عدد جهانی وجود ندارد. Duration به فاصله، پیچیدگی، نوع Transition، Device و امکان Interrupt بستگی دارد. برای تغییر کوچک کوتاه‌تر و برای تغییر Context زمان توضیحی بیشتری لازم است؛ اما Action نباید بی‌دلیل Block شود. Token بسازید و آن را با Performance و Task comprehension روی دستگاه واقعی آزمون کنید.

آیا باید تمام انیمیشن‌ها را در prefers-reduced-motion خاموش کنیم؟

نه لزوماً. هدف حذف یا جایگزینی Motion غیرضروری و آزاردهنده با State فوری، Opacity ملایم یا Feedback متنی است، در حالی که Meaning حفظ می‌شود. حرکت Essential باید دقیق توجیه شود. Default و Reduced را دو Variant محصول بدانید و هر دو را تست کنید.

برای اعلام «به سبد اضافه شد» از Toast استفاده کنیم؟

Toast می‌تواند کانال مکمل باشد، اما شمارنده و State سبد نیز باید به‌روز و برای فناوری کمکی قابل‌تشخیص شوند. پیام نباید تنها مسیر Undo باشد یا پیش از تأیید Server Success نشان دهد. اگر Stock/Price تغییر کرد، Reconciliation و اقدام بعدی روشن لازم است.

آیا میکرواینتراکشن باعث بهبود رتبه سئو می‌شود؟

اثر مستقیم و تضمین‌شده‌ای برای یک Animation وجود ندارد. Microinteraction می‌تواند Task و تجربه را بهتر کند، اما JavaScript سنگین، INP بد، Layout shift یا محتوای پنهان می‌تواند آسیب بزند. آن را برای کاربر و Outcome طراحی کنید و Performance/Core Web Vitals را اندازه بگیرید؛ Bounce یا Dwell را میانبر رتبه فرض نکنید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *