آنیسازی 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
در قوانین مشخص شده است که استایلها در چه زمانی از استایل فعلی به استایل جدید تغییر میکنند.
برای اینکه انیمیشن اجرا شود، باید آن را به یک عنصر پیوند دهید.
مثال زیر "example" انیمیشن را به عنصر <div> پیوند میزند. انیمیشن 4 ثانیه طول میکشد و رنگ پسزمینه عناصر <div> را از "red" به "yellow" تغییر میدهد:
مثال
/* کد انیمیشن */ @keyframes example { از {background-color: red;} به {background-color: yellow;} } /* انیمیشن را به این عنصر اعمال کنید */ div { width: 100px; height: 100px; background-color: red; animation-name: example; animation-duration: 4s; }
توجه داشته باشید:animation-duration
ویژگی تعریف میکند که انیمیشن چقدر طول میکشد تا پایان یابد. اگر مشخص نشده باشد animation-duration
اگر این ویژگی تعریف نشده باشد، انیمیشن اجرا نمیشود زیرا مقدار پیشفرض 0s (0 ثانیه) است.
در مثال بالا، با استفاده از کلمات کلیدی "از" و "به" (که به ترتیب 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
این属性 مشخص میکند که انیمیشن باید چقدر تأخیر کند تا شروع شود.
مثال زیر 2 ثانیه تأخیر قبل از شروع انیمیشن دارد:
مثال
div { width: 100px; height: 100px; position: relative; background-color: red; animation-name: example; animation-duration: 4s; animation-delay: 2s; }
مقدار منفی نیز مجاز است. اگر از مقدار منفی استفاده شود، انیمیشن مانند این پخش میشود که N ثانیه قبل شروع شده است.
در مثال زیر، انیمیشن مانند این پخش میشود که 2 ثانیه قبل شروع شده است:
مثال
div { width: 100px; height: 100px; position: relative; background-color: red; animation-name: example; animation-duration: 4s; animation-delay: -2s; }
تنظیم تعداد اجراهای انیمیشن
animation-iteration-count
این属性 مشخص میکند که انیمیشن باید چند بار اجرا شود.
مثال زیر انیمیشن را قبل از توقف 3 بار اجرا میکند:
مثال
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