آنیسازیهای CSS
- صفحه قبل گذرهای CSS
- صفحه بعدی آیکنهای ابزارهای CSS
آنیسازیهای CSS
CSS میتواند انیمیشنهای HTML عناصر را بدون استفاده از JavaScript یا Flash ایجاد کند!
در این فصل، شما چیزهایی مانند زیر را یاد خواهید گرفت:
@keyframes
animation-name
animation-duration
animation-delay
animation-iteration-count
animation-direction
animation-timing-function
animation-fill-mode
animation
پشتیبانی مرورگرها از انیمیشن
اعداد در جدول نشاندهنده نسخه اولین مرورگر هستند که از این ویژگی پشتیبانی میکند.
ویژگی | Chrome | IE | Firefox | Safari | Opera |
---|---|---|---|---|---|
@keyframes | 43.0 | 10.0 | 16.0 | 9.0 | 30.0 |
animation-name | 43.0 | 10.0 | 16.0 | 9.0 | 30.0 |
animation-duration | 43.0 | 10.0 | 16.0 | 9.0 | 30.0 |
animation-delay | 43.0 | 10.0 | 16.0 | 9.0 | 30.0 |
animation-iteration-count | 43.0 | 10.0 | 16.0 | 9.0 | 30.0 |
animation-direction | 43.0 | 10.0 | 16.0 | 9.0 | 30.0 |
animation-timing-function | 43.0 | 10.0 | 16.0 | 9.0 | 30.0 |
animation-fill-mode | 43.0 | 10.0 | 16.0 | 9.0 | 30.0 |
animation | 43.0 | 10.0 | 16.0 | 9.0 | 30.0 |
انیمیشن CSS چیست؟
انیمیشن باعث میشود عنصر به تدریج از یک استایل به استایل دیگر تغییر کند.
شما میتوانید هر تعداد از ویژگیهای CSS را تغییر دهید.
برای استفاده از انیمیشن CSS، ابتدا باید چندین کادر کلیدی برای انیمیشن تعیین کنید.
کادرهای کلیدی شامل استایلهایی هستند که عنصر در زمان مشخصی دارد.
@keyframes قوانین
اگر در @keyframes
در قوانین تعیین شده است که استایلهای CSS در زمان مشخصی به تدریج از استایل فعلی به استایل جدید تغییر میکنند.
برای اینکه انیمیشن فعال شود، باید آن را به یک عنصر پیوند دهید.
مثال زیر "example" انیمیشن را به عنصر <div> پیوند میزند. انیمیشن 4 ثانیه طول میکشد و رنگ پسزمینه عناصر <div> را از "red" به "yellow" تغییر میدهد:
مثال
/* کد انیمیشن */ @keyframes example { from {background-color: red;} to {background-color: yellow;} } /* انیمیشن را به این عنصر اعمال کنید */ div { width: 100px; height: 100px; background-color: red; animation-name: example; animation-duration: 4s; }
توجه داشته باشید:animation-duration
ویژگی تعریف میکند که چقدر زمان طول میکشد تا انیمیشن تکمیل شود. اگر تعیین نشده باشد، animation-duration
اگر این ویژگی تعریف نشده باشد، انیمیشن رخ نمیدهد، زیرا مقدار پیشفرض 0s (0 ثانیه) است.
در مثال بالا، با استفاده از کلمات کلیدی "from" و "to" (که به ترتیب 0% (شروع) و 100% (پایان) را نشان میدهند)، ما زمان تغییر استایل را تنظیم کردهایم.
شما همچنین میتوانید از مقادیر درصدی استفاده کنید. با استفاده از درصد، میتوانید هر تعداد تغییرات استایل مورد نیاز خود را اضافه کنید.
مثال زیر در 25%، 50% و 100% کامل شدن انیمیشن تغییر رنگ پسزمینه عناصر <div> را تغییر میدهد:
مثال
/* کد انیمیشن */ @keyframes example { 0% {background-color: red;} 25% {background-color: yellow;} 50% {background-color: blue;} 100% {background-color: green;} } /* عناصری که انیمیشن به آنها اعمال میشود */ div { width: 100px; height: 100px; background-color: red; animation-name: example; animation-duration: 4s; }
مثال زیر در 25%,50% و 100% از انیمیشن، رنگ پسزمینه و موقعیت عناصر <div> را تغییر میدهد:
مثال
/* کد انیمیشن */ @keyframes example { 0% {background-color:red; left:0px; top:0px;} 25% {background-color:yellow; left:200px; top:0px;} 50% {background-color:blue; left:200px; top:200px;} 75% {background-color:green; left:0px; top:200px;} 100% {background-color:red; left:0px; top:0px;} } /* عناصری که انیمیشن به آنها اعمال میشود */ div { width: 100px; height: 100px; position: relative; background-color: red; animation-name: example; animation-duration: 4s; }
تأخیر انیمیشن
animation-delay
این ویژگی مشخص میکند که انیمیشن باید با تأخیر چقدر زمانی شروع به اجرا کند.
مثال زیر انیمیشن را با تأخیر دو ثانیه قبل از شروع اجرا میکند:
مثال
div { width: 100px; height: 100px; position: relative; background-color: red; animation-name: example; animation-duration: 4s; animation-delay: 2s; }
مقدار منفی نیز مجاز است. اگر از مقدار منفی استفاده شود، انیمیشن به گونهای شروع به پخش میکند که انگار N ثانیه از انیمیشن گذشته است.
در مثال زیر، انیمیشن به گونهای شروع به پخش میکند که انگار دو ثانیه از انیمیشن گذشته است:
مثال
div { width: 100px; height: 100px; position: relative; background-color: red; animation-name: example; animation-duration: 4s; animation-delay: -2s; }
تنظیم تعداد اجرای انیمیشن
animation-iteration-count
این ویژگی مشخص میکند که انیمیشن باید چند بار اجرا شود.
مثال زیر انیمیشن را قبل از توقف، سه بار اجرا میکند:
مثال
div { width: 100px; height: 100px; position: relative; background-color: red; animation-name: example; animation-duration: 4s; animation-iteration-count: 3; }
مثال زیر از مقدار "infinite" برای ادامه انیمیشن تا ابد استفاده میکند:
مثال
div { width: 100px; height: 100px; position: relative; background-color: red; animation-name: example; animation-duration: 4s; animation-iteration-count: infinite; }
انیمیشنهای معکوس یا متناوب
animation-direction
این ویژگی مشخص میکند که انیمیشن باید به سمت جلو، به سمت عقب یا به صورت متناوب اجرا شود.
animation-direction
این خصوصیت از مقادیر زیر را میپذیرد:
normal
- انیمیشن به صورت معمول پخش میشود (به سمت جلو). مقدار پیشفرضreverse
- انیمیشن به سمت معکوس (عقب) پخش میشودalternate
- انیمیشن ابتدا به سمت جلو و سپس به سمت عقب پخش میشودalternate-reverse
- انیمیشن ابتدا به سمت عقب و سپس به سمت جلو پخش میشود
در این مثال، انیمیشن به سمت معکوس (عقب) اجرا میشود:
مثال
div { width: 100px; height: 100px; position: relative; background-color: red; animation-name: example; animation-duration: 4s; animation-direction: reverse; }
مثال زیر از مقدار "alternate" برای اجرای ابتدا به سمت جلو و سپس به سمت عقب استفاده میکند:
مثال
div { width: 100px; height: 100px; position: relative; background-color: red; animation-name: example; animation-duration: 4s; animation-iteration-count: 2; animation-direction: alternate; }
مثال زیر از مقدار "alternate-reverse" برای اجرای ابتدا به سمت عقب و سپس به سمت جلو استفاده میکند:
مثال
div { width: 100px; height: 100px; position: relative; background-color: red; animation-name: example; animation-duration: 4s; animation-iteration-count: 2; animation-direction: alternate-reverse; }
منحنی سرعت انیمیشن را مشخص میکند
animation-timing-function
این خصوصیت منحنی سرعت انیمیشن را مشخص میکند.
animation-timing-function
این خصوصیت از مقادیر زیر را میپذیرد:
ease
- انیمیشنی که از کندتر شروع میکند، سپس شتاب میگیرد و سپس به آرامی پایان مییابد (پیشفرض)linear
- انیمیشنی که سرعت یکسان از شروع تا پایان دارد را مشخص کنیدease-in
- انیمیشنی که شروع کندتر است را مشخص کنیدease-out
- انیمیشنی که پایان کندتر است را مشخص کنیدease-in-out
- انیمیشنی که شروع و پایان آن کندتر است را مشخص کنیدcubic-bezier(n,n,n,n)
- مقادیر خود را در تابع بی塞尔 سهگانه تعریف کنید
در اینجا مثالهایی از برخی از منحنیهای سرعتدهیای که میتوانید از آنها استفاده کنید آورده شده است:
مثال
#div1 {animation-timing-function: linear;} #div2 {animation-timing-function: ease;} #div3 {animation-timing-function: ease-in;} #div4 {animation-timing-function: ease-out;} #div5 {animation-timing-function: ease-in-out;}
مدل پرکننده انیمیشن را مشخص میکند
انیمیشنهای CSS در مرحله قبل از اجرای اولین فریم کلیدی یا بعد از اجرای آخرین فریم کلیدی بر روی عناصر تأثیر نمیگذارند.animation-fill-mode
این خصوصیت میتواند این رفتار را پوشش دهد.
در حالی که انیمیشن در حال اجرا نیست (قبل از شروع، بعد از پایان یا هر دو)،animation-fill-mode
این خصوصیت استایلهای عنصر هدف را تعیین میکند.
خصوصیت animation-fill-mode از مقادیر زیر را میپذیرد:
none
- مقدار پیشفرض. انیمیشن در مرحله قبل از اجرا یا بعد از اجرا به هیچ عنوان استایلهای عناصر را اعمال نمیکند.forwards
- عناصر استایلهای تعیین شده در آخرین فریم کلیدی را حفظ خواهند کرد (بسته به animation-direction و animation-iteration-count).backwards
- عناصر استایلهای تعیین شده در اولین فریم کلیدی (بسته به animation-direction) را دریافت خواهند کرد و این مقدار را در طول دوره تأخیر انیمیشن حفظ خواهند کرد.both
- انیمیشن همزمان از قوانین پیشرفت و بازگشت پیروی میکند، بنابراین属性 انیمیشن در دو جهت گسترش مییابد.
مثال زیر به شما اجازه میدهد تا عناصر <div> را در انتهای انیمیشن با استفاده از مقادیر استایل از آخرین فریم کلیدی حفظ کنید:
مثال
div { width: 100px; height: 100px; background: red; position: relative; animation-name: example; animation-duration: 3s; animation-fill-mode: forwards; }
در مثال زیر، عناصر <div> در زمان تاخیر انیمیشن (قبل از شروع انیمیشن) به استایل اولین کلیدفریم تبدیل میشوند:
مثال
div { width: 100px; height: 100px; background: red; position: relative; animation-name: example; animation-duration: 3s; animation-delay: 2s; animation-fill-mode: backwards; }
در مثال زیر، عناصر <div> قبل از شروع انیمیشن به استایل اولین کلیدفریم تبدیل میشوند و در پایان انیمیشن به استایل آخرین کلیدفریم باقی میمانند:
مثال
div { width: 100px; height: 100px; background: red; position: relative; animation-name: example; animation-duration: 3s; animation-delay: 2s; animation-fill-mode: both; }
ویژگیهای خلاصه شده انیمیشن
در مثال زیر از شش ویژگی انیمیشن استفاده شده است:
مثال
div { animation-name: example; animation-duration: 5s; animation-timing-function: linear; animation-delay: 2s; animation-iteration-count: infinite; animation-direction: alternate; }
استفاده از خلاصهسازی animation
ویژگیها نیز میتوانند انیمیشن مشابه مثال بالا را ایجاد کنند:
مثال
div { animation: example 5s linear 2s infinite alternate; }
ویژگیهای انیمیشن CSS
در جدول زیر، قوانین @keyframes و تمامی ویژگیهای انیمیشن CSS لیست شدهاند:
ویژگی | وصف |
---|---|
@keyframes | تعریف حالت انیمیشن. |
animation | تنظیم属性 خلاصه شده برای تمامی属性 انیمیشن. |
animation-delay | تعریف تاخیر شروع انیمیشن. |
animation-direction | تعریف اینکه انیمیشن به سمت جلو، به سمت عقب یا به صورت متناوب پخش شود. |
animation-duration | تعریف زمانی که انیمیشن برای یک دوره کامل باید زمان بگذرد. |
animation-fill-mode | تعریف استایل عناصر در زمانی که انیمیشن در حال پخش نیست (قبل از شروع، بعد از پایان، یا هر دو). |
animation-iteration-count | تعریف تعداد دفعات پخش انیمیشن. |
animation-name | تعریف نام @keyframes برای انیمیشن. |
animation-play-state | تعیین میکند که انیمیشن باید اجرا شود یا متوقف شود. |
animation-timing-function | مقدار سرعت انیمیشن را تعیین میکند. |
- صفحه قبل گذرهای CSS
- صفحه بعدی آیکنهای ابزارهای CSS