ویرایشگر منحنی cubic-bezier
ویرایش منحنی شتاب CSS با نقاط کنترل کشیدنی، پیشنمایش زنده و خروجی cubic-bezier()
نقطهها را بکشید، یا با Tab روی یکی بایستید و با کلیدهای جهتدار جابهجایش کنید؛ نگه داشتن Shift گام را ده برابر میکند.
دربارهی ویرایشگر منحنی cubic-bezier
مقدار ease در CSS همان cubic-bezier(0.25, 0.1, 0.25, 1) است و برخلاف تصور رایج، در نیمهٔ زمان انیمیشن حدود ۸۰ درصد مسیر را طی کرده است. دو سر منحنی روی نقاط (0,0) و (1,1) قفلاند و فقط دو نقطهٔ کنترل در اختیار شماست. مقدار x باید بین ۰ و ۱ بماند وگرنه مرورگر کل قاعده را نامعتبر میشمارد و کنار میگذارد، اما y میتواند از این بازه بیرون بزند و حرکت را پرشی کند.
راهنمای استفاده از ویرایشگر منحنی cubic-bezier
- 1
نقطههای کنترل فیروزهای و بنفش را روی شبکه بکشید، یا با Tab روی یکی بایستید و با کلیدهای جهتدار جابهجایش کنید.
- 2
یا از فهرست کشویی یک پیشتنظیم آماده انتخاب کنید: linear، ease، easeOutBack، material-standard و موارد دیگر.
- 3
برای بارگذاری منحنی موجود، مقدار cubic-bezier() را در کادر ورودی بچسبانید و دکمهٔ اعمال را بزنید؛ دکمهٔ معکوس، منحنی را وارونه میکند.
- 4
سه نوار پیشنمایش یعنی جابهجایی، نوار پیشرفت و محو شدن را ببینید و لغزندهٔ مدت را روی زمان واقعی انیمیشن خود تنظیم کنید.
- 5
با لغزندهٔ نمونهبردار مقدار f(x) را در هر نقطه بخوانید، سپس مقدار cubic-bezier() یا قطعهٔ کامل CSS را کپی کنید.
پرسشهای متداول
چرا x فقط میتواند بین ۰ و ۱ باشد ولی y آزاد است؟
چون x همان زمان است. اگر x از این بازه بیرون بزند، منحنی روی خودش تا میخورد و یک لحظه از زمان به دو مقدار پیشرفت نگاشت میشود؛ به همین دلیل استاندارد x1 و x2 را به بازهٔ ۰ تا ۱ محدود کرده و مرورگرها کل اعلان را نامعتبر میشمارند. y چنین محدودیتی ندارد و مقادیر بزرگتر از ۱ یا کوچکتر از ۰ باعث پرش از مقصد یا عقبنشینی اولیه میشوند. این ابزار هم x را به همین دلیل محدود میکند و ورودی خارج از بازه را رد میکند.
آیا کلیدواژههایی مثل ease-in-out رفتار ویژهای دارند؟
خیر، این کلیدواژهها صرفاً نام مستعار هستند. در استاندارد، ease-in-out دقیقاً برابر cubic-bezier(0.42, 0, 0.58, 1) تعریف شده است، همانطور که ease برابر (0.25, 0.1, 0.25, 1)، ease-in برابر (0.42, 0, 1, 1)، ease-out برابر (0, 0, 0.58, 1) و linear برابر (0, 0, 1, 1) است. هیچ منطق پنهانی پشت آنها نیست.
میتوانم با این ابزار حرکت فنری یا جهشی بسازم؟
نه، و این محدودیت خودِ cubic-bezier است نه این ابزار. یک منحنی بزیه درجه سه هر مقدار x را فقط یک بار قطع میکند و حداکثر یک بار میتواند از مقصد رد شود. جهش یا فنر واقعی به نوسانهای پیاپی نیاز دارد که فقط با تابع linear() و دهها نقطه، یا با keyframes و جاوااسکریپت شدنی است. بیشترین کاری که اینجا میشود کرد یک پرش واحد مثل easeOutBack است که در حدود x=0.573 به اوج y=1.0978 میرسد.
حلقهٔ توخالی بنفش در پیشنمایش چه فرقی با نقطهٔ پر دارد؟
نقطهٔ پر را کد خود ابزار با حل معادلهٔ منحنی در هر فریم رسم میکند، ولی حلقهٔ توخالی را موتور CSS مرورگر و مستقیماً از روی مقدار تولیدشده حرکت میدهد. اگر نمونهبرداری ما درست باشد این دو باید روی هم بیفتند، پس این حلقه در عمل یک آزمون صحت زنده است. اختلاف کوچک فقط وقتی دیده میشود که ترنزیشن یک فریم دیرتر شروع شود یا مرورگر تب پسزمینه را کند کند.