متحرک سازی با سی اس اس

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

فرمت gif یکی از فرمت های رایج تصویری در وب است که بیشترین استفاده آن زمانی است که بخواهیم یک تصویر متحرک یا به صورت انیمیشن را نمایش دهیم. اما این فرمت برخلاف رایج بودن آن اصلا فرمت خوبی نیست و دارای حجم های بالایی نیز است و همچنین از تعداد رنگ پایینی پشتیبانی میکند. برای مثال Matt در این سایت یک عکس با فرمت gif را گذاشته است که دارای 1.7MB حجم است، در حالی که همان عکس با فرمت ویدیویی WebM دارای فقط 94KB است.

در این مطلب ما قصد داریم ببینیم که چگونه میتوان با استفاده از animation در CSS3 یک تصویر متحرک بسازیم.

برای مثال در عکس زیر ما میخواهیم پره های دو توربین بادی همواره در حال چرخش باشند

(برای نمایش در اندازه اصلی روی عکس کلیک کنید)

برای اینکار ابتدا باید پره های دو توربین بادی را جدا کرده و در یک عکس جداگانه دیگر ذخیره کنیم. که اینکار را به دست حرفه ای های فتوشاپ میسپاریم و سپس در عکس اصلی دیگر نباید نشانی از پره های توربین باشد. یعنی به شکل زیر

(برای نمایش در اندازه اصلی روی عکس کلیک کنید)

و پره های دو توربین به این شکل پره ی اول و پره ی دوم  باشند.

حالا که همه چیز در اختیار ما قرار دارد تنها کاری که باید انجام دهیم این است که با استفاده از CSS پره ها را در محل مناسب خود قرار دهیم و با استفاده از animation در CSS3 آن ها را به صورت مداوم بچرخانیم.

برای اینکار کد HTML زیر را به صفحه اضافه میکنیم.

کدهای CSS زیر را نیز اضافه میکنیم. کد background-size:cover باعث میشود بکگراند کل عنصر را پوشش بگیرد و همینطور کد background-size:contain باعث میشود تصویر بزرگتر از عنصر نباشد.

.image-wrap {
  position:relative;
  overflow:hidden;
}
.image-wrap .windmill-background {
  background:url(wind-bg.png) no-repeat;
  background-size:cover;
}
.image-wrap .mill1 {
  background:url(mill1.png) no-repeat;
  background-size:contain;
  position:absolute;
}
.image-wrap .mill2 {
  background:url(mill2.png) no-repeat;
  background-size:contain;
  position:absolute;
}

همانطور که میبینید ما پوزیشن پره ها را برابر absolute قرار دادیم. بنابراین با استفاده از مشخصه های top و left میتوانیم محل دقیق آنها بر روی عکس را مشخص کنیم. بعد از انجام اینکار کدهای انیمیشن زیر را نیز اضافه میکنیم. کد transform-origin مشخص میکند که rotate روی چه نقطه ای انجام شود. برای مثال اگر عرض و طول تصویر پره های ما یکسان بود باید این مشخصه را برابر center در نظر میگرفتیم.

.image-wrap .mill1, .image-wrap .mill2 {
  animation:spin 90s infinite linear;
  transform-origin:127px 89px;
}
@keyframes spin {
  0% {transform: rotateZ(0deg)}
  100% {transform: rotateZ(360deg)}
}