خاصية دالة توقيت الحركة

آخر تحديث: 2026-09-13

animation-timing-function خاصية دالة توقيت الحركة

تحدد خاصية animation-timing-function كيفية تغيّر سرعة الحركة مع الوقت — سواء كانت بوتيرة ثابتة، أو تبدأ سريعة وتتباطأ، أو تبدو مرنة. ومن خلال التحكم في توزيع الأوقات لأطر البين، تجعل الحركة أكثر واقعية فيزيائياً أو أكثر تنسيقاً، وهي خاصية أساسية لجودة حركة مصقولة.

الفئة
القيمة الأوليةease
موروثلا
ينطبق على
نوع الحركة
إصدار CSSCSS3
الحالةقياسي

📝 التركيب

animation-timing-function: ease | ease-in | ease-out | ease-in-out | linear | step-start | step-end | steps(<integer>) | cubic-bezier(<number>,<number>,<number>,<number>);

⚙️ القيم

القيمةالنوعالوصف
ease | ease-in | ease-out | ease-in-out | linear | step-start | step-end | steps() | cubic-bezier()كلمة مفتاحيةمنحنى سرعة الحركة

▶ مثال

عدّل الكود أدناه وشاهد النتيجة المباشرة في الملعب:

🌐 دعم المتصفحات

المتصفح ChromeChrome EdgeEdge FirefoxFirefox SafariSafari OperaOpera
animation-timing-function v43 v12 v16 v9 v30
مدعوم في جميع المتصفحات الرئيسية
تلميح: يسمح cubic-bezier() بتعريف أي منحنى بيزييه مخصص؛ وأدوات مثل cubic-bezier.com تجعله مرئياً تفاعلياً. ويُستخدم steps() للرسوم المتحركة إطاراً بإطار مثل أوراق sprite.
تلميح: ease هو الافتراضي ويتصرف ببطء-سريع-بطء. يناسب linear بسرعة ثابتة الدوران المستمر؛ ويُستخدم ease-out عادةً عندما تدخل العناصر الشاشة، و ease-in عند مغادرتها.

❓ الأسئلة الشائعة

Qهل transition-timing-function هو نفسه animation-timing-function؟
Aالقيم المقبولة متطابقة — ease و linear و cubic-bezier() و steps() وغيرها — ولكنها تؤثر في أشياء مختلفة: الأول يُطبَّق على الانتقالات والثاني على الحركات. وكلاهما يتحكم في العلاقة بين الوقت والتقدم لا بين المسافة والسرعة، لذا ينتج نفس القيمة cubic-bezier نفس التأثير في المكانين.
Qكيف أنشئ تأثيراً مرناً أو قافزاً باستخدام cubic-bezier؟
Aاستخدم cubic-bezier() بقيم y خارج النطاق 0-1، مثلًا cubic-bezier(0.68, -0.55, 0.27, 1.55). عندما تتجاوز المنحنى النطاق، يتحرك العنصر متجاوزاً القيمة الهدف أولاً ثم يعود، مما يُنتج إحساساً مرناً. وتناسب هذه المنحنيات المتجاوزة للنطاق التفاعلات الحيوية مثل الأزرار القافزة ودخول النوافذ المنبثقة.
Qكيف أكتب حركة steps() إطاراً بإطار، ومتى يجب استخدامها؟
Aيقسم steps(n) الحركة إلى n أجزاء متساوية، وتقفز القيمة بين الأجزاء بدلاً من الاستيفاء المستمر. وبالاقتران مع ورقة sprite، يُنتج حركة إطاراً بإطار، حيث يدوم كل إطار duration / n. يحتفظ jump-start بالإطار الأول، ويحتفظ jump-end بالأخير، و step-start/step-end هما الصيغتان المختصرتان.
Qما الفرق بين ease و ease-in و ease-out و linear، ومتى أستخدم كل واحد؟
Aيبدأ ease (الافتراضي) سريعاً وينتهي ببطء، وهو خيار جيد للأغراض العامة. ويبدأ ease-in ببطء ويتسارع، ويناسب العناصر التي تغادر الشاشة. ويبدأ ease-out سريعاً ويتباطأ، ويناسب العناصر التي تدخل — مثل النوافذ المنبثقة والبطاقات المنزلقة. و ease-in-out بطيء عند كلا الطرفين، جيد لتأثيرات الحلقة مثل الأضواء النابضة. أما linear فبسرعة ثابتة طوال الوقت، ومثالي للدوران وأشرطة التقدم.

📚 دروس ذات صلة

Web-Tutorial.com

فريق Web-Tutorial التقني

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

100%