ترقية الرسوم المتحركة لـ CSS باستخدام منحنيات الحركة

نشرت: 2022-03-10
ملخص سريع هناك رسوم متحركة لواجهة المستخدم ، ثم هناك رسوم متحركة جيدة لواجهة المستخدم. الرسوم المتحركة الجيدة تجعلك تذهب "واو!" - إنها سلسة وجميلة والأهم من ذلك كله طبيعية وليست ممتلئة أو صلبة أو آلية. إذا كنت متكررًا Dribbble أو UpLabs ، فستعرف ما أتحدث عنه. مع وجود العديد من المصممين المذهلين الذين يقومون بإنشاء مثل هذه الرسوم المتحركة الجميلة ، فإن أي مطور يرغب بطبيعة الحال في إعادة إنشائها في مشاريعه الخاصة. الآن ، توفر CSS بعض الإعدادات المسبقة transition-timing-function ، مثل ease-in ease-out ease-in-out ، والتي تضيف مستوى معينًا من السلاسة والواقعية ، لكنها عامة جدًا ، أليس كذلك؟ كم سيكون مملاً إذا اتبعت كل الرسوم المتحركة على الويب وظائف التوقيت الثلاث نفسها؟

هناك رسوم متحركة لواجهة المستخدم ، ثم هناك رسوم متحركة جيدة لواجهة المستخدم. الرسوم المتحركة الجيدة تجعلك تذهب "واو!" - إنها سلسة وجميلة والأهم من ذلك كله طبيعية وليست ممتلئة أو صلبة أو آلية. إذا كنت متكررًا Dribbble أو UpLabs ، فستعرف ما أتحدث عنه.

مزيد من القراءة عن التحطيم:

  • الرسوم المتحركة SVG و CSS مع مسار القصاصة
  • تقنيات الرسوم المتحركة العملية
  • إنشاء رسوم متحركة "مرسومة باليد" باستخدام SVG
  • واجهة برمجة تطبيقات Web Animation الجديدة

مع وجود العديد من المصممين المذهلين الذين يقومون بإنشاء مثل هذه الرسوم المتحركة الجميلة ، فإن أي مطور يرغب بطبيعة الحال في إعادة إنشائها في مشاريعه الخاصة. الآن ، توفر CSS بعض الإعدادات المسبقة transition-timing-function ، مثل ease-in ease-out ease-in-out ، والتي تضيف مستوى معينًا من السلاسة والواقعية ، لكنها عامة جدًا ، أليس كذلك؟ كم سيكون مملاً إذا اتبعت كل الرسوم المتحركة على الويب وظائف التوقيت الثلاث نفسها؟

(الائتمان: لوكاس ستراناك)
المزيد بعد القفز! أكمل القراءة أدناه ↓

إحدى خصائص transition-timing-function هي cubic-bezier(n1, n2, n3, n4) ، حيث يمكنك تمرير أربعة أرقام لإنشاء دالة التوقيت الخاصة بك. قرب نهاية هذا المقال ، ستعرف بالضبط ما تمثله هذه الأرقام الأربعة - ومع ذلك ، صدقني ، فإن الخروج بأربعة أرقام لالتقاط الانتقال الذي تتخيله في رأسك ليس قريبًا من أن يكون سهلاً. لكن بفضل cubic-bezier وقيصر ، لست مضطرًا لذلك. تجلب هذه الأدوات منحنيات الحركة إلى الويب.

يتم استخدام منحنيات الحركة بشكل أساسي بواسطة الرسوم المتحركة (على سبيل المثال ، في Adobe After Effects) لإنشاء رسوم متحركة متقدمة وواقعية. باستخدام cubic-bezier و Ceasar ، يمكنك ببساطة معالجة شكل المنحنى ، وسيتم ملء هذه الأرقام الأربعة ( n1, n2, n3, n4 ) من أجلك ، وهو أمر رائع للغاية! ومع ذلك ، لاستخدام منحنيات الحركة والاستفادة منها إلى أقصى حد ، تحتاج إلى فهم كيفية عملها ، وهذا ما سنفعله في هذه المقالة. هيا نبدأ.

فهم منحنيات الحركة

منحنى الحركة ليس سوى قطعة أرض بين أي خاصية متحركة ووقت. يحدد منحنى الحركة كيف تختلف سرعة الرسوم المتحركة التي تعمل تحت تأثيرها بمرور الوقت.

منحنى الحركة هو رسم بياني بين الخاصية المتحركة والوقت.
منحنى الحركة هو رسم بياني بين خاصية متحركة والوقت. (عرض النسخة الكبيرة)

لنأخذ المسافة ( translateX ) كمثال على خاصية متحركة. (الشرح ينطبق على أي خاصية متحركة أخرى.)

حساب السرعة في الوقت t1 على مخطط المسافة والوقت.
حساب السرعة في الوقت t1 على مخطط المسافة والوقت. (عرض النسخة الكبيرة)

إذا كان لديك أي خبرة في الفيزياء وحساب التفاضل والتكامل الأساسي ، فستعرف أن فك شفرة السرعة من الرسم البياني للوقت والمسافة أمر بسيط للغاية. أول مشتق للمسافة كدالة للوقت ، فيما يتعلق بالوقت ، هو السرعة ، مما يعني أن الكائن الذي يتبع منحنى المسافة والوقت سيكون له سرعة أكبر في الأماكن التي يكون فيها المنحنى حادًا ومنخفضًا في الأماكن التي يكون فيها المنحنى أكثر انبساطًا . إذا كنت تعرف كيف يعمل هذا ، عظيم! أنت جاهز تمامًا ويمكنك الانتقال إلى القسم التالي.

الآن ، أدرك أن التصميم والتطوير مجال متنوع ، وليس كل شخص لديه نفس الخلفية. ربما كانت الفقرتان المذكورتان أعلاه مصطلحات لك. لا تأكل. سنواصل المضي قدمًا ونفهم المصطلحات.

ضع في اعتبارك المربع الأحمر أدناه. دعنا نحصل على القليل من الصلابة هنا وندعو الصندوق الأحمر "Boxy" ؛ سيكون من الأسهل الرجوع إليها بهذه الطريقة. حسنًا ، سوف ينتقل Boxy من حافة الشاشة إلى الأخرى بطريقة خطية ، وسنقوم بتحليل حركته.

أحد الإعدادات المسبقة transition-timing-function linear . لجعل Boxy يتحرك ، كل ما نقوم به هو إضافة الفصل التالي.

 .moveForward { transform: translateX(1000px); }

للتحكم في الرسوم المتحركة ، سنقوم بتعيين خاصية transition لـ Boxy على النحو التالي:

 #boxy { width: 200px; height: 200px; background: red; transition-property: transform; transition-duration: 1s; transition-timing-function: linear; }

هذه طريقة مسهبة للغاية لتحديد transition . في الواقع ، ستجد دائمًا transition مكتوبًا في شكله المختصر:

 #boxy { width: 200px; height: 200px; background: red; transition: transform 1s linear; }

دعونا نرى الأمر.

Boxy تمر بحركة خطية
الصندوق يمر بحركة خطية.

الروبوتية ، أليس كذلك؟ يمكنك القول أن هذه الحركة تبدو آلية لأنها خطية ، وهي إجابة معقولة تمامًا. لكن هل يمكن أن تشرح لماذا؟ يمكننا أن نرى أن الإعداد linear ينتج عنه حركة آلية ، ولكن ما الذي يحدث بالضبط خلف الكواليس؟ هذا ما سنكتشفه أولاً ؛ سنصل إلى الأجزاء الداخلية ونفهم لماذا تبدو هذه الحركة آلية ومكتلة وغير طبيعية.

لنبدأ برسم حركة Boxy بالرسوم البيانية لمعرفة ما إذا كان بإمكاننا اكتساب بعض البصيرة. يتكون الرسم البياني من محورين ، الأول هو المسافة والثاني. يغطي Boxy مسافة إجمالية قدرها 1000 بكسل (مسافة) في ثانية واحدة (وقت). الآن ، لا تخف من كل العمليات الحسابية أدناه - إنها بسيطة جدًا.

هذا هو رسمنا البياني البسيط للغاية ، مع المحاور كما هو مذكور.

رسم بياني فارغ بالمحاور
رسم بياني فارغ بالمحاور (عرض نسخة كبيرة)

في الوقت الحالي ، إنه فارغ. دعونا نملأه ببعض البيانات.

للبدء ، نعلم أنه في 0 ثانية ، عندما لم تبدأ الرسوم المتحركة بعد ، يكون Boxy في موضعه الأولي (0 بكسل). وبعد مرور ثانية واحدة ، قطع Boxy ما مجموعه 1000 بكسل ، وهبط على الحافة المقابلة للشاشة.

مواقف بوكسي الأولية والنهائية
مواقف Boxy الأولية والنهائية (عرض النسخة الكبيرة)

دعونا نرسم هذه البيانات على الرسم البياني.

رسم بياني مع مواقف Boxy الأولية والنهائية
رسم بياني بمواضع Boxy الأولية والنهائية (عرض النسخة الكبيرة)

حتى الان جيدة جدا. لكن نقطتي بيانات لا تكفيان - فنحن بحاجة إلى المزيد. يوضح الشكل التالي أوضاع Boxy في نقاط زمنية مختلفة (كل ذلك بفضل الكاميرا عالية السرعة).

مواقف بوكسي في أوقات مختلفة
مواقف بوكسي في أوقات مختلفة (عرض النسخة الكبيرة)

دعنا نضيف هذه البيانات إلى الرسم البياني الخاص بنا.

رسم بياني بمواضع مختلفة
رسم بياني بمواضع مختلفة مرسوم (عرض نسخة كبيرة)

يمكنك بالطبع الحصول على العديد من نقاط البيانات لأوقات مختلفة (على سبيل المثال ، 0.375 ثانية ، 0.6 ثانية ، وما إلى ذلك) ولكن ما لدينا يكفي لإكمال الرسم البياني الخاص بنا. بجمع كل النقاط نكون قد أكملنا الرسم البياني. كفك!

الرسم البياني النهائي
الرسم البياني النهائي (عرض النسخة الكبيرة)

رائع ، لكن ماذا يخبرنا هذا؟ تذكر أننا بدأنا تحقيقنا بهدف فهم لماذا تبدو الحركة الخطية لـ Boxy غير طبيعية وروبوتية؟ في لمحة ، هذا الرسم البياني الذي أنشأناه للتو لا يخبرنا بأي شيء عن ذلك. نحن بحاجة إلى التعمق.

ضع الرسم البياني في اعتبارك ودعنا نتحدث لمدة دقيقة عن السرعة. أعلم أنك تعرف ما هي السرعة - أود فقط أن أصفها بمصطلحات رياضية. معادلة السرعة كما يلي:

صيغة رياضية للسرعة
صيغة رياضية للسرعة (عرض النسخة الكبيرة)

لذلك ، إذا قطعت السيارة مسافة 100 كيلومتر في ساعة واحدة ، نقول إن سرعتها 100 كيلومتر في الساعة.

تمثل السرعة
تمثيل السرعة (عرض النسخة الكبيرة)

إذا ضاعفت السيارة سرعتها ، فستبدأ في قطع ضعف المسافة (200 كيلومتر) في نفس الفترة (ساعة واحدة) ، أو بمعنى آخر ، ستغطي المسافة الأصلية البالغة 100 كيلومتر في نصف الوقت (0.5 ساعة) . منطقي؟

وبالمثل ، إذا خفضت السيارة سرعتها إلى النصف (أي تباطأت السرعة بمقدار النصف) ، فستبدأ في قطع مسافة 50 كيلومترًا في نفس الفترة (ساعة واحدة) ، أو بعبارة أخرى ، ستغطي المسافة الأصلية البالغة 100 كيلومترات في ضعف الوقت (ساعتان).

رائعة! مع هذا بعيدًا ، دعنا ننتقل من حيث توقفنا. كنا نحاول معرفة كيف يمكن للرسم البياني بين المسافة والوقت أن يساعدنا في فهم لماذا تبدو الحركة الخطية لـ Boxy آلية.

مهلا ، انتظر لحظة! لدينا رسم بياني بين المسافة والوقت ، ويمكن حساب السرعة من المسافة والوقت ، أليس كذلك؟ دعنا نحاول حساب سرعة Boxy على فترات زمنية مختلفة.

حساب السرعة على فترات مختلفة
حساب السرعة على فترات مختلفة (عرض نسخة كبيرة)

هنا ، اخترت ثلاث فترات زمنية مختلفة: واحدة بالقرب من البداية ، وواحدة في المنتصف وواحدة في النهاية بالقرب من الموضع النهائي. كما هو واضح ، في جميع الفترات الثلاثة ، يمتلك Boxy نفس السرعة (s1 = s2 = s3) وهي 1000 بكسل في الثانية ؛ أي بغض النظر عن الفاصل الزمني الذي تختاره في الرسم البياني أعلاه ، ستجد Boxy يتحرك بسرعة 1000 بكسل في الثانية. أليس هذا غريبا؟ الأشياء في الحياة الواقعية لا تتحرك بسرعة ثابتة ؛ يبدأون ببطء ، ويزيدون سرعتهم تدريجيًا ، ويتحركون لفترة من الوقت ، ثم يبطئون مرة أخرى قبل التوقف ، لكن Boxy يبدأ فجأة بسرعة 1000 بكسل في الثانية ، ويتحرك بنفس السرعة ويتوقف فجأة بنفس السرعة تمامًا. هذا هو السبب في أن حركة Boxy تبدو آلية وغير طبيعية. سيتعين علينا تغيير الرسم البياني الخاص بنا لإصلاح هذا. لكن قبل التعمق في الأمر ، سنحتاج إلى معرفة كيف ستؤثر التغييرات في السرعة على الرسم البياني المرسوم بين المسافة والوقت. مستعد؟ هذا سيكون ممتعا

دعنا نضاعف سرعة Boxy ونرى كيف يتغير مظهر الرسم البياني استجابةً لذلك. سرعة Boxy الأصلية ، كما حسبنا أعلاه ، هي 1000 بكسل في الثانية. نظرًا لأننا ضاعفنا السرعة ، سيتمكن Boxy الآن من تغطية مسافة 1000 بكسل في نصف الوقت - أي في 0.5 ثانية. دعونا نضع ذلك على الرسم البياني.

رسم بياني يظهر سرعة مضاعفة
رسم بياني يظهر سرعة مضاعفة (عرض النسخة الكبيرة)

ماذا لو ضاعفنا السرعة ثلاث مرات؟ يغطي Boxy الآن 1000 بكسل في ثلث الوقت (ثلث ثانية).

رسم بياني يوضح سرعة ثلاثية
رسم بياني يوضح سرعة ثلاثية (عرض النسخة الكبيرة)

حسنًا ، هل لاحظت شيئًا؟ لاحظ كيف ، عندما يتغير الرسم البياني ، تزداد الزاوية التي يصنعها الخط مع محور الوقت مع زيادة السرعة.

حسنًا ، لنبدأ ونخفض سرعة بوكسي إلى النصف. يعني خفض سرعته إلى النصف أن Boxy سيكون قادرًا على تغطية 500 بكسل فقط (نصف المسافة الأصلية) في ثانية واحدة. دعونا نضع هذا على الرسم البياني.

رسم بياني يوضح نصف السرعة
رسم بياني يوضح نصف السرعة (عرض النسخة الكبيرة)

دعنا نبطئ Boxy أكثر قليلاً ، مما يجعل السرعة ثلث السرعة الأصلية. سيتمكن Boxy من تغطية ثلث المسافة الأصلية في ثانية واحدة.

رسم بياني يوضح ثلث السرعة
رسم بياني يوضح ثلث السرعة (عرض نسخة كبيرة)

ترى نمط؟ يصبح الخط أكثر انحدارًا وانحدارًا مع زيادة سرعة Boxy ، ويبدأ في التسطيح بينما نبطئ Boxy.

يصبح الخط أكثر انحدارًا مع زيادة السرعة ويتسطح مع انخفاض السرعة
يصبح الخط أكثر انحدارًا مع زيادة السرعة ويتسطح مع انخفاض السرعة. (عرض النسخة الكبيرة)

هذا أمر منطقي لأنه ، بالنسبة للخط الأكثر انحدارًا ، ينتج عن تقدم بسيط في الوقت تغيير أعلى بكثير في المسافة ، مما يعني سرعة أكبر.

يؤدي التغيير البسيط في الوقت إلى تغيير كبير نسبيًا في المسافة ، مما يؤدي إلى رسم بياني أكثر حدة.
يؤدي التغيير البسيط في الوقت إلى تغيير كبير نسبيًا في المسافة ، مما يؤدي إلى رسم بياني أكثر حدة. (عرض النسخة الكبيرة)
يؤدي التغيير البسيط في الوقت إلى تغيير كبير نسبيًا في المسافة ، مما يؤدي إلى رسم بياني أكثر حدة.
يؤدي التغيير البسيط في الوقت إلى تغيير كبير نسبيًا في المسافة ، مما يؤدي إلى رسم بياني أكثر حدة. (عرض النسخة الكبيرة)

من ناحية أخرى ، بالنسبة للخط الأقل انحدارًا ، ينتج عن التغيير الكبير في الوقت تغييرًا طفيفًا في المسافة ، مما يعني سرعة أقل.

التغيير في الوقت المناسب للتغيير في المسافة في رسم بياني أقل حدة
التغيير في الوقت مقابل التغيير في المسافة في الرسم البياني الأقل حدة (عرض النسخة الكبيرة)
التغيير في الوقت مقابل التغيير في المسافة في الرسم البياني الأقل حدة
التغيير في الوقت مقابل التغيير في المسافة في الرسم البياني الأقل حدة (عرض النسخة الكبيرة)

مع كل التغييرات التي أجريناها ، لا يزال Boxy يتحرك بطريقة خطية ، فقط بسرعات مختلفة. ومع ذلك ، مع معرفتنا المكتسبة حديثًا حول كيفية تأثير التغييرات في المسافة مقابل الوقت على السرعة ، يمكننا تجربة ورسم رسم بياني يجعل Boxy يتحرك بطريقة تبدو طبيعية وواقعية.

لنأخذ الأمر خطوة بخطوة. أولاً ، تبدأ الأشياء في الحياة الواقعية ببطء وتزداد سرعتها ببطء. لذا ، لنفعل ذلك.

في جميع تكرارات الرسم البياني الموضحة أدناه ، ستلاحظ أن النقاط الموجودة في الزوايا المقابلة تظل ثابتة. هذا لأننا لا نغير المدة التي تعمل فيها الرسوم المتحركة ، ولا نغير المسافة التي يقطعها Boxy.

إنشاء منحنى حركة مخصص
إنشاء منحنى حركة مخصص (عرض النسخة الكبيرة)

إذا كان Boxy سيتبع الرسم البياني أعلاه ، فسوف يتحرك بسرعة أبطأ لمدة 0.25 ثانية ، لأن الخط أقل انحدارًا بدءًا من 0 إلى 0.25 ثانية ، ثم سيتحول فجأة إلى سرعة أعلى بعد 0.25 ثانية (السبب هو أن الخط في الرسم البياني يصبح أكثر حدة بعد 0.25 ثانية). ومع ذلك ، سنحتاج إلى تسهيل هذا الانتقال ؛ لا نريد أي زوايا - هذا ما يسمى بمنحنى الحركة ، بعد كل شيء. دعونا نحول تلك الزاوية إلى منحنى.

إنشاء منحنى حركة مخصص
إنشاء منحنى حركة مخصص (عرض النسخة الكبيرة)

لاحظ الانتقال السلس الذي يمر به Boxy من حالة السكون إلى الزيادة التدريجية في السرعة.

Boxy بعد منحنى الحركة أعلاه
مربع يتبع منحنى الحركة أعلاه (عرض نسخة كبيرة)

جيد! بعد ذلك ، تتباطأ الأشياء في الحياة الواقعية تدريجياً قبل التوقف. دعنا نغير الرسم البياني لتحقيق ذلك. مرة أخرى ، سنلتقط نقطة زمنية نود بعدها أن يبدأ Boxy في التباطؤ. ماذا عن حوالي 0.6 ثانية؟ لقد سهلت ركن الانتقال إلى منحنى هنا بالفعل.

منحنى الحركة المخصص النهائي
منحنى الحركة المخصص النهائي (عرض النسخة الكبيرة)

انظر إلى Boxy Go! طبيعي أكثر ، أليس كذلك؟

Boxy بعد منحنى الحركة المخصص
Boxy يتبع منحنى الحركة المخصص (عرض النسخة الكبيرة)

المنحنى الذي رسمناه في مكان الزاوية هو في الواقع مجموعة من العديد من مقاطع الخطوط الصغيرة ؛ وكما تعلم بالفعل ، كلما كان الخط على الرسم البياني أكثر انحدارًا ، زادت السرعة ، وكلما كان الخط أكثر انبساطًا ، كانت السرعة أبطأ. لاحظ كيف في الجزء الأيسر من الصورة ، تصبح مقاطع الخط التي يتكون منها المنحنى أكثر حدة وانحدارًا ، مما يؤدي إلى زيادة تدريجية في السرعة ، ويتم تسطيحها تدريجياً على الجانب الأيمن ، مما يؤدي إلى تناقص السرعة تدريجيًا؟

المنحنى ليس سوى مجموعة من العديد من مقاطع الخط.
المنحنى ليس سوى مجموعة من العديد من مقاطع الخط. (عرض النسخة الكبيرة)

مع كل هذه المعرفة ، يصبح فهم منحنيات الحركة أسهل بكثير. لنلقِ نظرة على بعض الأمثلة.

(عرض النسخة الكبيرة)
مثال 1
مثال 1 (عرض النسخة الكبيرة)
(عرض النسخة الكبيرة)
مثال 2
مثال 2 (عرض النسخة الكبيرة)
(عرض النسخة الكبيرة)
مثال 3
مثال 3 (عرض نسخة كبيرة)

استخدام منحنيات الحركة في الرسوم المتحركة لواجهة المستخدم

في المرة التالية التي يتعين عليك فيها تحريك عنصر واجهة المستخدم ، سيكون لديك قوة منحنيات الحركة تحت تصرفك. سواء كان شريطًا منزلقًا أو نافذة مشروطة أو قائمة منسدلة ، فإن إضافة المقدار الصحيح من الرسوم المتحركة وجعلها تبدو سلسة وطبيعية ستزيد من جودة واجهة المستخدم الخاصة بك بشكل كبير. سيجعل واجهة المستخدم تشعر بالرضا. خذ القائمة المنسدلة أدناه:

انظر إلى Pen nJial بواسطة Nash Vail (nashvail) على CodePen.

انظر إلى Pen nJial بواسطة Nash Vail (nashvail) على CodePen.

يؤدي النقر فوق قائمة الهامبرغر إلى جلب القائمة من اليسار ، لكن الرسوم المتحركة تبدو ممتلئة. يوضح السطر 51 من CSS أن الرسوم المتحركة بها transition-timing-function مضبوطة على linear . يمكننا تحسين هذا. دعنا ننتقل إلى مكعب بيزير وننشئ وظيفة توقيت مخصصة.

إذا كنت تقرأ هذا ، فمن الآمن أن تفترض أنك مصمم أو مطور أو كليهما ، وبالتالي ، ليس غريبًا على منحنيات البيزير المكعبة ؛ هناك فرصة جيدة لأنك واجهتها مرة واحدة على الأقل. منحنيات بيزير أعجوبة. يتم استخدامها بشكل أساسي في رسومات الكمبيوتر لرسم الأشكال وتستخدم في أدوات مثل Sketch و Adobe Illustrator لرسم رسومات متجهة. السبب وراء شهرة منحنيات البيزير المكعبة هو أنها سهلة الاستخدام: فقط قم بتعديل مواضع النقاط الأربع المختلفة ، وقم بإنشاء نوع المنحنى الذي تحتاجه.

نظرًا لأننا نعرف دائمًا الحالة الأولية والنهائية للكائن المتحرك ، يمكننا إصلاح نقطتين. وهذا يترك نقطتين فقط يتعين علينا تعديل مواقفهما. تسمى النقطتان الثابتتان بنقطتي الربط ، والنقطتان المتبقيتان هما نقطتا تحكم.

أجزاء من منحنى بيزير
أجزاء من منحنى بيزير (عرض النسخة الكبيرة)

كما تتذكر ، يقبل cubic-bezier أربعة أرقام ( n1, n2, n3, n4 ) عند إنشاء transition-timing-function مخصصة. هذه الأرقام الأربعة لا تمثل شيئًا سوى مواضع نقطتي التحكم: n1, n2 تمثل إحداثيات x و y لنقطة التحكم الأولى ، و n3, n4 تمثل إحداثيات نقطة التحكم الثانية. نظرًا لأن تغيير موضع نقاط التحكم سيغير شكل المنحنى ، وبالتالي ، الرسوم المتحركة لدينا بشكل عام ، فإن النتيجة هي نفسها عند تعديل أي من أو كل n1, n2, n3, n4 . على سبيل المثال ، يمثل الشكل أدناه cubic-bezier(.14, .78, .89, .35) :

منحنى بيزير مكعب يمثل (.14 ، .78 ، .89 ، .35).
منحنى بيزير مكعب يمثل (.14, .78, .89, .35) (عرض النسخة الكبيرة)

الرياضيات وراء هذه المنحنيات التي تبدو بسيطة رائعة.

حسنًا ، حسنًا ، دعنا نعود إلى حيث كنا ذاهبون مع مكعب بيزير: إنشاء وظيفة transition-timing-function مخصصة. أريد نوع الرسوم المتحركة الذي تنزلق فيه القائمة بسرعة كبيرة ثم تتباطأ وتنتهي برشاقة:

تعديل منحنى البيزير المكعب
ضبط منحنى البيزير المكعب (عرض النسخة الكبيرة)

هذا يبدو جيدا. ستبدأ الرسوم المتحركة بسرعة ثم تبطئ ، بدلاً من التحرك بسرعة ثابتة طوال الوقت. سأقوم ببساطة بنسخ cubic-bezier(.05, .69, .14, 1) من أعلى الصفحة واستبدال linear به.

انظر إلى Pen nJial بواسطة Nash Vail (nashvail) على CodePen.

انظر إلى Pen nJial بواسطة Nash Vail (nashvail) على CodePen.

ترى الفرق؟ يبدو التكرار الثاني أكثر طبيعية وجاذبية. تخيل لو أن كل الرسوم المتحركة في واجهة المستخدم الخاصة بك تتبع وظيفة توقيت طبيعية. كم من الرائع أن يكون ذلك؟

كما رأينا ، منحنيات الحركة ليست صعبة على الإطلاق. إنها سهلة الفهم والاستخدام. معهم ، يمكنك نقل واجهة المستخدم الخاصة بك إلى المستوى التالي.

أتمنى أن تكون قد تعلمت كيف تعمل منحنيات الحركة. إذا كنت تمر بالكثير من التجارب والخطأ لجعل منحنيات الحركة تعمل بالطريقة التي تريدها ، أو إذا لم تكن تستخدمها على الإطلاق ، فيجب أن تشعر بالراحة الآن في ثنيها حسب إرادتك وإنشاء رسوم متحركة جميلة. لأنه ، بعد كل شيء ، الرسوم المتحركة مهمة.