آموزش رایگان CSS

آموزش انیمیشن‌های پیشرفته با keyframes در CSS: طراحی حرکات پویا و چند مرحله‌ای

1402/06/18 22:48 محراب حسن زاده
آموزش انیمیشن‌های پیشرفته با keyframes در CSS: طراحی حرکات پویا و چند مرحله‌ای

انیمیشن‌ها در CSS به شما این امکان را می‌دهند که عناصر وب‌سایت را به صورت پویا و جذاب نمایش دهید. Keyframes یکی از قابلیت‌های قدرتمند CSS برای ایجاد انیمیشن‌های چند مرحله‌ای و پیچیده است. با استفاده از keyframes، می‌توانید حرکت‌ها و تغییرات را در مراحل مختلف تعیین کنید و به عناصر خود جلوه‌های بصری فوق‌العاده‌ای ببخشید. در این مقاله، نحوه استفاده از keyframes برای ساخت انیمیشن‌های پیشرفته را بررسی می‌کنیم و مثال‌هایی از طراحی حرکات پویا و چند مرحله‌ای ارائه می‌دهیم.

 

انیمیشن با keyframes چیست؟

keyframes یک ویژگی در CSS است که به شما اجازه می‌دهد یک انیمیشن با چندین مرحله یا تغییر ایجاد کنید. به کمک keyframes می‌توانید تغییراتی مانند حرکت، تغییر رنگ، چرخش، و بزرگ‌نمایی را در درصدهای مختلف زمان‌بندی انیمیشن مشخص کنید.

 

نحوه تعریف keyframes

برای تعریف انیمیشن با keyframes، ابتدا از @keyframes استفاده می‌کنیم و سپس مراحل و تغییرات را در داخل آن تعیین می‌کنیم.



@keyframes animationName {
  0% { /* استایل شروع انیمیشن */ }
  50% { /* استایل میانه انیمیشن */ }
  100% { /* استایل پایان انیمیشن */ }
}

 

نحوه اعمال انیمیشن با keyframes به عناصر

برای اعمال انیمیشن به عناصر، از ویژگی animation استفاده می‌کنیم. این ویژگی شامل چندین زیرخصوصیت مهم است که می‌توانند کنترل کاملی بر زمان‌بندی، نوع حرکت و دفعات تکرار انیمیشن داشته باشند:

  • animation-name: نام انیمیشنی که در keyframes تعریف شده است.

  • animation-duration: مدت زمان اجرای انیمیشن.

  • animation-timing-function: نوع حرکت انیمیشن (مانند ease، linear، ease-in، ease-out).

  • animation-delay: تأخیر در شروع انیمیشن.

  • animation-iteration-count: تعداد دفعات تکرار انیمیشن (مقدار infinite برای تکرار بی‌نهایت).

  • animation-direction: جهت انیمیشن (مانند normal، reverse، alternate).

 

مثال ساده از انیمیشن چند مرحله‌ای با keyframes

در مثال زیر، عنصری را ایجاد می‌کنیم که از سمت چپ به سمت راست حرکت می‌کند و سپس به رنگ قرمز تغییر می‌یابد.



@keyframes slideAndChangeColor {
  0% {
    transform: translateX(0);
    background-color: blue;
  }
  50% {
    transform: translateX(100px);
    background-color: green;
  }
  100% {
    transform: translateX(200px);
    background-color: red;
  }
}

.box {
  width: 100px;
  height: 100px;
  background-color: blue;
  animation: slideAndChangeColor 4s ease-in-out infinite;
}

 

در اینجا:

  • عنصر .box با نام انیمیشن slideAndChangeColor در طول 4 ثانیه و به صورت بی‌نهایت حرکت می‌کند.

  • transform و background-color در مراحل 0%، 50% و 100% تغییر می‌کنند.

 

کنترل زمان‌بندی و تکرار انیمیشن با animation-iteration-count و animation-direction

می‌توانید تعداد دفعات تکرار و جهت اجرای انیمیشن را با استفاده از animation-iteration-count و animation-direction کنترل کنید.

مثال از تکرار و تغییر جهت انیمیشن



@keyframes bounce {
  0% {
    transform: translateY(0);
  }
  50% {
    transform: translateY(-50px);
  }
  100% {
    transform: translateY(0);
  }
}

.bounce-box {
  width: 100px;
  height: 100px;
  background-color: #3498db;
  animation: bounce 1s ease infinite alternate;
}

 

در اینجا:

  • عنصر .bounce-box با نام انیمیشن bounce به طور نامحدود و با جهت alternate حرکت می‌کند، یعنی از بالا به پایین و برعکس تکرار می‌شود.

 

ایجاد انیمیشن‌های پیچیده با keyframes

می‌توانید با افزودن مراحل بیشتر به keyframes، انیمیشن‌های پیچیده‌تری ایجاد کنید. در مثال زیر، با ایجاد تغییرات چند مرحله‌ای، یک انیمیشن گردشی با تغییر رنگ ایجاد کرده‌ایم.



@keyframes rotateAndColorChange {
  0% {
    transform: rotate(0deg);
    background-color: red;
  }
  25% {
    transform: rotate(90deg);
    background-color: yellow;
  }
  50% {
    transform: rotate(180deg);
    background-color: green;
  }
  75% {
    transform: rotate(270deg);
    background-color: blue;
  }
  100% {
    transform: rotate(360deg);
    background-color: red;
  }
}

.square {
  width: 100px;
  height: 100px;
  animation: rotateAndColorChange 4s linear infinite;
}

 

در اینجا:

  • عنصر .square در طول 4 ثانیه 360 درجه می‌چرخد و رنگ آن در مراحل مختلف تغییر می‌کند.

 

ایجاد انیمیشن‌های هماهنگ و چند عنصری با استفاده از delay

با استفاده از animation-delay می‌توانید انیمیشن‌ها را به صورت هماهنگ و با تاخیرهای مختلف بر روی چندین عنصر اعمال کنید.

مثال انیمیشن هماهنگ روی چندین دایره



@keyframes fadeInOut {
  0%, 100% {
    opacity: 0;
  }
  50% {
    opacity: 1;
  }
}

.circle {
  width: 50px;
  height: 50px;
  border-radius: 50%;
  background-color: #3498db;
  animation: fadeInOut 2s ease-in-out infinite;
}

.circle:nth-child(1) {
  animation-delay: 0s;
}

.circle:nth-child(2) {
  animation-delay: 0.5s;
}

.circle:nth-child(3) {
  animation-delay: 1s;
}

 

در اینجا:

  • سه دایره با تاخیرهای مختلف محو و نمایان می‌شوند، ایجاد یک انیمیشن هماهنگ و زیبا.

 

استفاده از Timing Functions برای کنترل حرکت انیمیشن

با استفاده از animation-timing-function می‌توانید نوع حرکت انیمیشن را تعیین کنید. Timing Functionهایی مانند ease، linear، ease-in، ease-out و ease-in-out تغییرات سرعت انیمیشن را کنترل می‌کنند.

مثال استفاده از timing-function های مختلف



@keyframes slide {
  0% {
    transform: translateX(0);
  }
  100% {
    transform: translateX(200px);
  }
}

.slide-box-ease {
  animation: slide 2s ease;
}

.slide-box-linear {
  animation: slide 2s linear;
}

.slide-box-ease-in-out {
  animation: slide 2s ease-in-out;
}

 

در اینجا:

  • هر عنصر با نوع حرکت متفاوتی انیمیشن می‌شود و می‌توان تفاوت حرکت‌ها را مشاهده کرد.

 

افکت‌های چند مرحله‌ای پیچیده با استفاده از keyframes

در این مثال یک انیمیشن پیچیده ایجاد می‌کنیم که شامل ترکیبی از چرخش، تغییر اندازه، و تغییر رنگ است.



@keyframes complexAnimation {
  0% {
    transform: scale(1) rotate(0deg);
    background-color: #3498db;
  }
  25% {
    transform: scale(1.2) rotate(45deg);
    background-color: #e74c3c;
  }
  50% {
    transform: scale(0.8) rotate(90deg);
    background-color: #2ecc71;
  }
  75% {
    transform: scale(1.5) rotate(135deg);
    background-color: #9b59b6;
  }
  100% {
    transform: scale(1) rotate(180deg);
    background-color: #3498db;
  }
}

.complex-box {
  width: 100px;
  height: 100px;
  animation: complexAnimation 5s infinite ease-in-out;
}

 

در اینجا:

عنصر .complex-box در طی انیمیشن ترکیبی از چرخش، تغییر اندازه، و تغییر رنگ را تجربه می‌کند و این افکت در طول 5 ثانیه تکرار می‌شود.

 

نکات و بهترین شیوه‌ها برای استفاده از انیمیشن‌های CSS

  • انیمیشن‌ها را بهینه کنید: از انیمیشن‌های پیچیده و طولانی به صورت افراطی استفاده نکنید، زیرا ممکن است عملکرد صفحه را کاهش دهد.

  • هماهنگی و سازگاری با طراحی کلی: انیمیشن‌ها باید با طراحی و تجربه کاربری وب‌سایت همخوانی داشته باشند و نباید کاربر را سردرگم کنند.

  • تست در دستگاه‌های مختلف: انیمیشن‌ها را در دستگاه‌ها و مرورگرهای مختلف تست کنید تا از نمایش درست آن‌ها مطمئن شوید.

 

نتیجه‌گیری

انیمیشن‌های CSS با استفاده از keyframes به شما این امکان را می‌دهند تا حرکات پیچیده و جذابی را ایجاد کنید که تجربه کاربری را بهبود می‌بخشد و وب‌سایت شما را از نظر بصری متمایز می‌کند. با استفاده از این ابزار قدرتمند، می‌توانید تغییرات مرحله‌ای، حرکت‌ها و افکت‌های تعاملی مختلفی ایجاد کنید و یک وب‌سایت پویا و جذاب طراحی کنید.

پرسش و پاسخ

نظری یافت نشد

مطالب مشابه

آموزش جامع اینترفیس‌ها و کلاس‌ها (Classes) در ES6 جاوا اسکریپت: مفاهیم و کاربردها
1403/07/28 21:31

آموزش جامع اینترفیس‌ها و کلاس‌ها (Classes) در ES6 جاوا اسکریپت: مفاهیم و کاربردها

مطالعه بیشتر
آموزش سیر تا پیاز تاریخ و زمان در PHP (استاندارد گوگل)
1405/04/27 21:58

آموزش سیر تا پیاز تاریخ و زمان در PHP (استاندارد گوگل)

مطالعه بیشتر
مقدمه‌ای به رویدادها و دستورات در Vue.js: نحوه مدیریت و استفاده از v-on
1402/06/28 23:53

مقدمه‌ای به رویدادها و دستورات در Vue.js: نحوه مدیریت و استفاده از v-on

مطالعه بیشتر
آموزش کامل توابع سازنده (Constructors) و پروتوتایپ‌ها (Prototypes) در جاوا اسکریپت: راهنمای جامع
1403/07/28 21:41

آموزش کامل توابع سازنده (Constructors) و پروتوتایپ‌ها (Prototypes) در جاوا اسکریپت: راهنمای جامع

مطالعه بیشتر
آموزش کار با رویدادهای فرم و اعتبارسنجی فرم‌ها در جاوا اسکریپت: راهنمای جامع
1403/08/03 16:47

آموزش کار با رویدادهای فرم و اعتبارسنجی فرم‌ها در جاوا اسکریپت: راهنمای جامع

مطالعه بیشتر
آموزش کار با Webpack و Bundlers برای مدیریت پروژه‌ها: راهنمای جامع و کاربردی
1403/08/05 20:43

آموزش کار با Webpack و Bundlers برای مدیریت پروژه‌ها: راهنمای جامع و کاربردی

مطالعه بیشتر
استفاده از CSS Scoped و استایل‌دهی به کامپوننت‌ها در Vue.js | آموزش کاربردی
1404/09/23 21:27

استفاده از CSS Scoped و استایل‌دهی به کامپوننت‌ها در Vue.js | آموزش کاربردی

مطالعه بیشتر
مدیریت خطاها و استفاده از try...catch در جاوا اسکریپت: راهنمای کامل و مثال‌ها
1403/07/28 21:58

مدیریت خطاها و استفاده از try...catch در جاوا اسکریپت: راهنمای کامل و مثال‌ها

مطالعه بیشتر
آموزش HTML: اولین گام برای طراحی سایت و سئو حرفه‌ای
1402/05/18 00:00

آموزش HTML: اولین گام برای طراحی سایت و سئو حرفه‌ای

مطالعه بیشتر
آموزش جامع ساخت فرم ورود کاربر در PHP (براساس استانداردهای گوگل و امنیت بالا)
1405/05/14 22:03

آموزش جامع ساخت فرم ورود کاربر در PHP (براساس استانداردهای گوگل و امنیت بالا)

مطالعه بیشتر
آموزش جامع انواع داده‌ها در PHP (بخش اول: String, Integer, Float, Boolean)
1405/03/24 01:01

آموزش جامع انواع داده‌ها در PHP (بخش اول: String, Integer, Float, Boolean)

مطالعه بیشتر
تفاوت متد GET و POST در PHP؛ راهنمای جامع و استاندارد گوگل
1405/04/27 22:13

تفاوت متد GET و POST در PHP؛ راهنمای جامع و استاندارد گوگل

مطالعه بیشتر

تمامی حقوق معتلق به ناشر سایت است و کپی از آن پیگرد قانونی دارد