سیاساس/animation
| transform | animation | شبهکلاسها و شبهعناصر |
| سیاساس |
انیمیشن با CSS
[ویرایش]animation در CSS قابلیتی قدرتمند است که به شما اجازه میدهد حرکت و تغییر تدریجی در عناصر HTML ایجاد کنید، بدون نیاز به جاوااسکریپت. با استفاده از animation میتوانید جلوههای بصری جذاب، تعاملی و سبک طراحی حرفهای به صفحات وب اضافه کنید.
تفاوت animation با transition
[ویرایش]- transition فقط بین دو حالت (قبل و بعد) حرکت میکند.
- animation میتواند چند مرحلهای (keyframe) باشد و تکرار شود.
- animation مستقل از تعامل کاربر هم میتواند اجرا شود.
اجزای اصلی انیمیشن
[ویرایش]برای استفاده از animation در CSS، دو بخش نیاز است:
- تعریف keyframes که مراحل انیمیشن را مشخص میکند.
- اتصال آن keyframe به یک عنصر با ویژگیهای animation.
۱. تعریف keyframes
[ویرایش]با استفاده از دستور @keyframes، انیمیشن ساخته میشود:
@keyframes fadeIn {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
یا بهصورت درصدی:
@keyframes moveAndRotate {
0% {
transform: translateX(0) rotate(0deg);
}
50% {
transform: translateX(100px) rotate(180deg);
}
100% {
transform: translateX(0) rotate(360deg);
}
}
۲. اتصال انیمیشن به عنصر
[ویرایش]پس از تعریف keyframes، با ویژگی animation آن را به عنصر نسبت میدهیم:
.box {
animation-name: fadeIn;
animation-duration: 2s;
animation-timing-function: ease-in;
animation-delay: 0.5s;
animation-iteration-count: infinite;
animation-direction: alternate;
}
ویژگیهای animation
[ویرایش]- animation-name – نام keyframe تعریفشده
- animation-duration – مدت زمان (مثلاً 2s یا 500ms)
- animation-timing-function – نوع منحنی حرکت (linear, ease, ease-in, ease-out, steps, cubic-bezier)
- animation-delay – تاخیر قبل از شروع
- animation-iteration-count – تعداد تکرار (مثلاً infinite یا عدد)
- animation-direction – جهت حرکت (normal, reverse, alternate, alternate-reverse)
- animation-fill-mode – تعیین رفتار عنصر قبل و بعد از انیمیشن (none, forwards, backwards, both)
- animation-play-state – کنترل اجرا یا توقف انیمیشن (running, paused)
حالت shorthand (خلاصهنویسی)
[ویرایش]میتوان همه ویژگیها را در یک خط نوشت:
animation: fadeIn 2s ease-in 0.5s infinite alternate;
مثالهای رایج
[ویرایش]محو شدن (fade)
[ویرایش]@keyframes fade {
from { opacity: 0; }
to { opacity: 1; }
}
.fade-in {
animation: fade 1s ease-in forwards;
}
تکان خوردن (shake)
[ویرایش]@keyframes shake {
0%, 100% { transform: translateX(0); }
25% { transform: translateX(-5px); }
75% { transform: translateX(5px); }
}
.error {
animation: shake 0.5s ease;
}
حرکت بیپایان ابر یا ماشین
[ویرایش]@keyframes moveLeft {
from { transform: translateX(100%); }
to { transform: translateX(-100%); }
}
.cloud {
animation: moveLeft 20s linear infinite;
}
animation-fill-mode
[ویرایش]این ویژگی رفتار عنصر را قبل یا بعد از انیمیشن مشخص میکند:
- none – حالت پیشفرض؛ بدون حفظ حالت
- forwards – مقدار نهایی حفظ میشود
- backwards – مقدار ابتدایی قبل از شروع اعمال میشود
- both – هر دو را ترکیب میکند
مثال:
.box {
animation: grow 2s forwards;
}
کنترل با animation-play-state
[ویرایش]میتوان انیمیشن را متوقف یا ادامه داد:
.box:hover {
animation-play-state: paused;
}
نکات حرفهای
[ویرایش]- نامهای انیمیشن باید یکتا باشند.
- اگر از چند عنصر مشابه استفاده میکنید، میتوان انیمیشنها را کمی با delay از هم متمایز کرد.
- برای کنترل دقیق میتوان از cubic-bezier استفاده کرد.
- با animation میتوان بدون نیاز به جاوااسکریپت، افکتهای حرفهای ایجاد کرد.
انیمیشن ۳بعدی
[ویرایش]میتوان transformهای ۳بعدی را نیز با animation ترکیب کرد:
@keyframes spin3D {
0% { transform: rotateY(0deg); }
100% { transform: rotateY(360deg); }
}
کارایی و بهینهسازی
[ویرایش]- animation بر پایه CSS توسط GPU پردازش میشود، بنابراین نسبتاً سریع و روان است.
- برای بهترین عملکرد، از تغییر ویژگیهایی مثل
opacityوtransformاستفاده کنید. - تغییر ویژگیهایی مثل
topیاwidthمیتواند عملکرد را کاهش دهد.
سئو و تجربه کاربری
[ویرایش]- انیمیشن بر سئو مستقیم تأثیر ندارد، اما تجربه کاربری بهتر موجب افزایش ماندگاری کاربر در سایت میشود.
- در طراحی رابط کاربری جذاب و تعاملی مؤثر است.
- بهتر است در صفحات اصلی یا سنگین از انیمیشنهای زیاد پرهیز شود تا عملکرد سایت افت نکند.
تمرین پیشنهادی
[ویرایش]یک دکمه طراحی کنید که وقتی کاربر ماوس را روی آن میبرد:
- رنگ پسزمینه تغییر کند
- اندازه کمی بزرگ شود
- با انیمیشن نرم و رفتوبرگشتی اجرا شود (alternate)
منابع بیشتر
[ویرایش]جمعبندی
[ویرایش]ویژگی animation در CSS ابزار فوقالعادهای برای افزودن حرکت و پویایی به رابط کاربری است. با کمک keyframes، میتوان جلوههای پیچیدهتری نسبت به transition پیادهسازی کرد. استفادهٔ درست و بهینه از animation تجربه کاربری را ارتقا میدهد و سایت را حرفهایتر نشان میدهد.