

فیزیک و حرکت
حرکت در پیوند بیدرنگ راه میافتد، نرم مینشیند و نشان میدهد هر چیز از کجا آمده و به کجا میرود.
حس حرکت
حرکت پیوند زنده و امروزی است و در همان حال آرامش و ثبات میدهد. شیطنت و بازیگوشی ندارد، تند نیست و کند و کشدار هم نیست.
هر حرکت نشان میدهد چیزی از کجا آمده و به کجا میرود. پژوهشها نشان دادهاند وقتی نما با حرکت عوض میشود، آدمها جای چیزها را بهتر به یاد میسپارند. برای همین در پیوند هیچ چیز یکباره جایش را به چیز دیگری نمیدهد.
منحنی و مدتها
همه حرکتهای پیوند یک منحنی دارند. حرکت بیدرنگ راه میافتد، زود به سرعت میرسد و هرچه به مقصد نزدیکتر میشود آهستهتر میرود تا بیآنکه از آن رد شود بایستد. منش حرکت همهجا یکی است و فقط اندازهاش فرق میکند: در کارهای روزمره کوچک است و در لحظههای مهم بزرگتر. مدتها به میلیثانیهاند.
| مدت | باز شدن | بستن | کاربرد |
|---|---|---|---|
فیدfade | ۱۵۰ | بستن ۱۲۰ | تغییر رنگ و اوپاسیتی، مثل هاور، فوکوس و خطا |
کوچکsmall | ۲۱۰ | بستن ۱۶۸ | کنترلها و سرفیسهای کوچک، مثل برگشت دکمه بعد از فشردن و آمدن نقطه نشان |
متوسطmedium | ۳۰۰ | بستن ۲۴۰ | منو، پنل، گامهای یک مدال، پیام خطای کادر متن و پر شدن سنجه |
بزرگlarge | ۴۰۰ | بستن ۳۲۰ | مدال و باتمشیتی که بیدکمه باز میشوند، لایتباکس و کادر جستوجو |
لحظهmoment | ۵۰۰ | بستن ۴۰۰ | دکمه یا کارتی که پنجرهای از دلش باز میشود، و لحظههای کمیاب مثل تشکر بعد از کمک |
بستن هر حرکت یکپنجم کوتاهتر از باز شدنش است. تغییر رنگ و اوپاسیتی همیشه فید است.
سه نوع حرکت
هر چیزی که در پیوند حرکت میکند یکی از سه نوع «تبدیل» (Container transform)، «کاغذ» و «درجا» است. نوع هر حرکت را این تعیین میکند که چه چیزی باز میشود و از کجا.
تبدیل
چیزی که کاربر زده، اول خودش تبدیل میشود. دکمهای که مدال را باز میکند دکمه اصلی مدال میشود و کاغذ از دلش باز میشود؛ کارت یا کادر جستوجو هم خودش پنجره میشود. هر تکهاش هم یکی از تکههای پنجره میشود و فقط چیزی که همتایی برایش نمانده، به ترتیب پیدا میشود. موقع بستن هر چیز به جای خودش برمیگردد.
در پیوند دکمهای که مدال باز میکند، کارت، تصویر، کادر جستوجو و گروه آواتار مقصدشان را با تبدیل باز میکنند.
کاغذ
سرفیسی از لبه صفحه یا از زیر دکمهای که کاربر زده بیرون میآید و از همان راه برمیگردد.
مدال تأیید، مدالی که بیدکمه باز شود و رفتن به صفحه تازه اینطور حرکت میکنند. منو، تولتیپ، توست و دراور هم وقتی به پیوند اضافه شوند همین حرکت را دارند.
درجا
چیزی باز نمیشود. خود کامپوننت سر جایش اندازه یا حالتش را عوض میکند.
دکمه، دکمه آیکوندار، لینک، کادر متن، هشدار، نشان، نوار پیشرفت، سنجه و آواتار اینطور حرکت میکنند.
حرکت هر کامپوننت
تبدیل سه شرط دارد. اول اینکه کاربر چیزی را زده باشد که روی صفحه دیده میشد. دوم اینکه آنچه باز میشود خود همان چیز باشد که بزرگتر شده. سوم اینکه کاربر در آن بماند و کار کند. اگر چیزی باز شود و یکی از این شرطها را نداشته باشد، حرکتش کاغذ است و اگر هیچ چیز باز نشود، حرکت درجاست.
موبایل و دسکتاپ یک تصمیم دارند و فقط شکل مقصد فرق میکند: دکمهای که در دسکتاپ مدال باز میکند، در موبایل باتمشیت باز میکند.
تبدیلها
شش کامپوننت پیوند با یک قاعده باز و بسته میشوند. هر چه در هر دو طرف هست جابهجا میشود و همتای خودش میشود، کاغذ از دل همان چیزی باز میشود که فشار دادید و چیزهای تازه پشت سر هم میرسند. طراحی این صحنهها فقط نمونهای برای دیدن حرکت است. هر کدام را خودتان بزنید یا با دکمه پخش ببینید.
با تو سفرهای رنگ میگیرد
با کمک شما بسته غذایی خانوادهها کاملتر میشود و سفرهشان رنگ میگیرد.با تو سفرهای رنگ میگیرد
با کمک شما بسته غذایی خانوادهها کاملتر میشود و سفرهشان رنگ میگیرد.کاهش حرکت
اگر «کاهش حرکت» در دستگاهتان روشن باشد، در پیوند هیچ چیز جابهجا یا بزرگ نمیشود. مدال و باتمشیت همانجا که باید باشند در ۱۵۰ میلیثانیه پیدا میشوند و چیزی که زدهاید سر جایش میماند. کنترلهای کوچک بیدرنگ به حالت تازهشان میروند و فقط رنگشان فید میشود. فوکوس و پیامهای خطا هیچوقت منتظر حرکت نمیمانند.
قواعد حرکت
۱۷ قاعده، هر کدام با نمونه درست و نادرست کنار هم؛ خطهای کمرنگ مسیر هر حرکت را نشان میدهند.
هیچ چیز از مقصدش رد نمیشود
مدال، منو و هر چیز دیگری مستقیم به جا و اندازه نهاییاش میرسد و همانجا میایستد. چیزی که از مقصد رد شود و برگردد، بازیگوش به نظر میرسد و چشم را دو بار به یک جا میکشد.
درست largeنادرست رد میشود و برمیگرددحرکت بیدرنگ راه میافتد
حرکت با فشردن شروع میشود و منتظر چیزی نمیماند. حرکتی که آرام راه بیفتد کند به نظر میرسد، حتی اگر کوتاه باشد.
درست mediumنادرست شروع آرامرنگ و اوپاسیتی فقط فید میشوند
هاور، فوکوس، انتخاب و خطا رنگ را در ۱۵۰ میلیثانیه عوض میکنند. رنگی که با بزرگ و کوچک شدن عوض شود، میتپد و چشم را بیدلیل به خودش میکشد.
درست fadeنادرست تپشبستن کوتاهتر از باز شدن است
کاربری که چیزی را میبندد، کارش با آن تمام شده است. برای همین بستن یکپنجم کوتاهتر از باز شدن است و راه را زودتر برای کار بعدی باز میکند.
درست largelarge-closeنادرست بستن کندتر از باز شدنهر حرکت را میشود وسط راه برگرداند
اگر کاربر وسط باز شدن دوباره بزند یا Esc را فشار دهد، حرکت از همان جایی که هست برمیگردد. هیچ چیز اول تا مقصد نمیرود تا بعد برگردد.
درست از همانجا برمیگرددنادرست اول تا ته میرودهر چیز از جایی میآید که به آن ربط دارد
منو از زیر دکمهاش باز میشود و باتمشیت از لبه پایین صفحه. چیزی که از جای بیربطی پیدا شود، رابطهاش با کار کاربر گم میشود.
درست زیر دکمهنادرست وسط صفحههر چیز از همان راهی که آمده برمیگردد
باتمشیتی که از پایین آمده به پایین برمیگردد و منو به زیر دکمهاش. اگر راه رفت و برگشت یکی نباشد، معلوم نیست آن چیز کجا رفت.
درست از پایینبه پاییننادرست از پایینبه کنارجلو در جهت خواندن است
در فارسی جلو یعنی چپ. صفحه یا گام بعدی از سمت چپ میآید و صفحه قبلی به سمت راست میرود.
درست از چپنادرست از راستتبدیل به جای خودش برمیگردد
مدالی که از دکمه باز شده، موقع بستن دوباره همان دکمه میشود، حتی اگر صفحه پشتش جابهجا شده باشد. اگر آن دکمه دیگر روی صفحه نباشد، مدال مثل کاغذ بسته میشود.
درست به دکمه برمیگرددنادرست فید میشودچیزی که در هر دو طرف هست دو تا نمیشود
برچسب دکمه خودش عنوان مدال میشود و عکس کارت خودش عکس بالای صفحه جزئیات. اگر یکی فید شود و دیگری پیدا شود، یک آن همان کلمه دو بار روی صفحه دیده میشود.
درست جابهجا میشودنادرست دو بار دیده میشودهر بار فقط یک تبدیل اتفاق میافتد
وقتی کارتی صفحه جزئیاتش میشود، بقیه صفحه سر جایش میماند. اگر دو تبدیل با هم اتفاق بیفتند، چشم نمیداند کدام را دنبال کند.
درست یک تبدیلنادرست دو تبدیل با همکار پرتکرار حرکت کمتری دارد
در ابزاری که کاربر روزی دهها بار با آن کار میکند، فقط مقصد اصلی با تبدیل باز میشود. حرکتی که بار اول دلنشین است، بار صدم فقط معطل میکند.
درست فقط رنگ ردیف عوض میشودنادرست ردیف مدال میشوددکمه خودش دکمه پنجره میشود
دکمهای که پنجره را باز میکند با رنگ خودش تا دکمه اصلی پنجره میرود و همان میشود. کاغذ پنجره هم از وسط همین دکمه باز میشود. اگر رنگ دکمه روی همه پنجره پخش شود، صفحه یک آن رنگی میشود و دکمه گم میشود.
درست دکمه پنجره میشودنادرست رنگ روی پنجره پخش میشودکارت و کادر جستوجو خودشان پنجره میشوند
کارت یا کادر جستوجویی که پنجرهای را باز میکند، خودش بزرگ میشود و پنجره میشود. رنگش زود به رنگ پنجره میرسد، نوشته و آیکونش سر جای خودشان در پنجره مینشینند و بعد بقیه محتوا پشت سر هم میرسد. اگر پنجرهای از پشت کادر پیدا شود و خود کادر کمکم محو شود، انگار پنجره از ناکجا آمده است.
درست کادر خودش پنجره میشودنادرست پنجره از پشت کادر پیدا میشودهر تکه یکی از تکههای پنجره میشود
وقتی کارت صفحه جزئیاتش میشود، هر تکهاش هم یکی از تکههای پنجره میشود: نشان «تهران» دکمه «حمایت میکنم» میشود و «۱۲ روز مانده» متن کنار آن. در متنها هم همین است: کلمههایی که در هر دو متن هست به جای تازهشان میروند و کلمههای اضافه به کلمههای تازه تبدیل میشوند. فقط چیزی که دیگر همتایی برایش نمانده، مثل دکمه بستن، تازه پیدا میشود. اگر تکهای محو شود و همانجا تکه دیگری پیدا شود، پیوند میان آن دو گم میشود.
درست نشانها دکمه و متن میشوندنادرست نشانها محو میشوندمحتوای پنجره پشت سر هم میرسد
هر تکه از محتوای پنجره وقتی کاغذ جایش را باز کرد، به ترتیب خواندن کمی از پایین بالا میآید. موقع بستن همین تکهها به ترتیب عکس و پیش از همه میروند. اگر همه با هم پیدا شوند، پنجره یکباره روی صفحه میافتد و چشم نمیداند از کجا بخواند.
درست یکی پس از دیگرینادرست همه با هممتنی که عوض میشود کلمهبهکلمه میغلتد
وقتی «پرداخت شد» روی همان دکمه «اشتراکگذاری کمپین» میشود، متن قبلی رو به بالا میرود و کلمههای تازه یکییکی از پایین میآیند. اگر یکی محو شود و دیگری همانجا پیدا شود، یک آن دو متن روی هم خوانده میشوند.
درست میغلتدنادرست دو متن روی هم
توکنها
هر تصمیم این صفحه در کد یک توکن نقش است و کامپوننتها فقط با همین نامها ساخته میشوند.
یک منحنی نرم و پنج مدت برای همه حرکتها، و گذارهایی که کامپوننتها از آنها میسازند.
- motion.easing.smooth--pv-sys-motion-easing-smoothcubic-bezier(0.25, 0.8, 0.25, 1)
- motion.easing.linear--pv-sys-motion-easing-linearcubic-bezier(0, 0, 1, 1)
- motion.easing.loop--pv-sys-motion-easing-loopcubic-bezier(0.45, 0, 0.55, 1)
- motion.length.fade--pv-sys-motion-length-fade150ms
- motion.length.small--pv-sys-motion-length-small210ms
- motion.length.medium--pv-sys-motion-length-medium300ms
- motion.length.large--pv-sys-motion-length-large400ms
- motion.length.moment--pv-sys-motion-length-moment500ms
- motion.transition.fade--pv-sys-motion-transition-fade-*duration: 220ms · delay: 0ms · timing-function: cubic-bezier(0.25, 0.8, 0.25, 1)
- motion.transition.fade-close--pv-sys-motion-transition-fade-close-*duration: 176ms · delay: 0ms · timing-function: cubic-bezier(0.25, 0.8, 0.25, 1)
- motion.transition.small--pv-sys-motion-transition-small-*duration: 307ms · delay: 0ms · timing-function: cubic-bezier(0.25, 0.8, 0.25, 1)
- motion.transition.small-close--pv-sys-motion-transition-small-close-*duration: 246ms · delay: 0ms · timing-function: cubic-bezier(0.25, 0.8, 0.25, 1)
- motion.transition.medium--pv-sys-motion-transition-medium-*duration: 439ms · delay: 0ms · timing-function: cubic-bezier(0.25, 0.8, 0.25, 1)
- motion.transition.medium-close--pv-sys-motion-transition-medium-close-*duration: 351ms · delay: 0ms · timing-function: cubic-bezier(0.25, 0.8, 0.25, 1)
- motion.transition.large--pv-sys-motion-transition-large-*duration: 586ms · delay: 0ms · timing-function: cubic-bezier(0.25, 0.8, 0.25, 1)
- motion.transition.large-close--pv-sys-motion-transition-large-close-*duration: 469ms · delay: 0ms · timing-function: cubic-bezier(0.25, 0.8, 0.25, 1)
- motion.transition.moment--pv-sys-motion-transition-moment-*duration: 732ms · delay: 0ms · timing-function: cubic-bezier(0.25, 0.8, 0.25, 1)
- motion.transition.moment-close--pv-sys-motion-transition-moment-close-*duration: 586ms · delay: 0ms · timing-function: cubic-bezier(0.25, 0.8, 0.25, 1)
- motion.transition.press--pv-sys-motion-transition-press-*duration: 132ms · delay: 0ms · timing-function: cubic-bezier(0.25, 0.8, 0.25, 1)
- motion.transition.reduced-crossfade--pv-sys-motion-transition-reduced-crossfade-*duration: 150ms · delay: 0ms · timing-function: cubic-bezier(0, 0, 1, 1)
- motion.loop.spin--pv-sys-motion-loop-spin800ms
- motion.loop.pulse--pv-sys-motion-loop-pulse1000ms
- motion.loop.travel--pv-sys-motion-loop-travel1200ms
- motion.loop.ambient--pv-sys-motion-loop-ambient1000ms
- motion.scale.press--pv-sys-motion-scale-press0.97
- motion.scale.press-icon--pv-sys-motion-scale-press-icon0.94
- motion.scale.press-row--pv-sys-motion-scale-press-row0.985
- motion.scale.pre-enter--pv-sys-motion-scale-pre-enter0.97
- motion.scale.pre-exit--pv-sys-motion-scale-pre-exit0.99
- motion.stagger.step--pv-sys-motion-stagger-step40ms
- motion.stagger.max-total--pv-sys-motion-stagger-max-total300ms