ساخت انیمیشن در جاوا اسکریپت با سادهترین و جذابترین روشها

از اون قابلیتاییه که هر کسی را سمت این زبان میاره. غیر ممکنه یه مدرکی تو هر سطحی از رشته ی کامپیوتر داشته باشید ولی با جاوااسکریپت آشنا نشده باشید. تو هر زیر شاخه ای از رشتهی کامپیوتر ، سر کلهی جاوااسکریپت همیشه پیدا میشه از هک و امنیت بگیرید تا هوش مصنوعی .
بعد اگه برید تحقیق کنید می فهمید. جاوااسکریپت زبان برنامه نویسی سمت کاربر هستش!! اخه با زبان برنامه نویسی سمت کلاینت میشه هک کرد ؟؟ حالا یه چیز جالبتر شاید براتون جالب باشه بدونید
ساخت انیمیشن در javascriptهم داریم. بله درست خوندید انیمیشن، اخه یه زبان برنامه نویسی سمت کاربر و این جور چیزا!
یکی از جذابترین بخشهای این زبان
کتابخانه های ساخت انیمیشن در جاوا اسکریپتهست. خیلی از این امکاناتی که js داره اگه قرار بود با کد های خود جاوااسکریپت نوشته بشه خیلی طولانی بود و یادگیریش هم سخت میشد .ولی با کتابخانه های ساخت انیمیشن در javascript میشه نتیجه دلخواهتون رو با نوشتن تعداد سطر کمتری بدست بیارید .
اگه جاوااسکریپت این همه کتابخونه واسش نوشته نمی شد شاید خیلی از ویژگی هاش شناخته نمی شد و ما جاوااسکریپت رو همون در حد یه زبان برنامه نویسی سمت کاربر می شناختیم و تا این حد جاوا اسکریپت رو یاد می گرفتیم که توی فرم ها تعداد کارکتر های پسورد کاربر بیش تر از 6 حرف باشه .
اما خوشبختانه چیزای زیادی هست که باید درباره جاوا اسکریپت یاد بگیریم که
ساخت انیمیشن در جاوا اسکریپتیکی از اوناس. نوشتن
کد انیمیشن در جاوا اسکریپتبه لطف کتابخونههای متعدد این زبان اصلا کار سختی نیست. فقط کافیه این کتابخانهها را بشناسیم و بدونیم چطور ازشون استفاده کنیم. فعلا میریم سراغ بحث اصلی این مقاله یعنی
ساخت انیمیشن با جاوا اسکریپت.
ساخت انیمیشن در جاوا اسکریپت
ساخت انیمیشن در جاوا اسکریپتیکی از راههای پیاده سازی انیمیشن در فرانت اند سایت محسوب میشه. به طور کلی در فرانت اند سه روش برای ساخت انیمیشن وجود داره، یک راه با استفاده از CSS animations ، روش دیگر CSS transitions و سومین راه
ساخت انیمیشن با جاوا اسکریپتهست. مزیتی که استفاده از جاوا اسکریپت برای انیمیشن سازی داره اینه که شما دستتون بازه تا هر حالتی را به انیمیشنهاتون اعمال کنید. حالا اینکه گفتیم یعنی چی؟
توی ساخت انیمیشن با دو روش CSS animations و CSS transitions یه مشکل مهم وجود داره. اینکه شما فقط میتونید وضعیت شروع و وضعیت پایان آیتم را تعریف کنید.
اگه انیمیشن شما keyframes داشته باشه، میتونید یکسری حالت وسط هم براش تعریف کنید؛ ولی بازم به شرایط مطلوب نمیرسه.
این چیزی که ساختید اسمش انیمیشن نیست. شما فقط یکسری ویژگی اختیاری برای یکسری نقاط خاص تعریف کردید. چیزی که باعث ساخت انیمیشن میشه، مقادیر میانی این وضعیتاس. البته همین هم را هم میتونیم اسمشو انیمیشن ولی بازم کیفیت خوبی نداره.
واقعیت اینه که این دو روش اصلا خروجی خوبی به ما نمیدن. شما نمیتونید سناریوهایی مثل حرکت یک شی روی منحنی، سقوط یه جسم آزاد تحت تاثیر گرانش یا خواصی با مقادیر تصادفی را برای این دو شیوه تعریف کنید. خوشبختانه ساخت انیمیشن با جاوا اسکریپت
کنترل خیلی خوبی روی تمام جنبههای انیمیشن سازی داره و یه دنیای بزرگ را به روی شما باز میکنه تا شما دیگه نگران جنبههای تکنیکی انیمیشنهای خودتون نباشید. مثلا این تصویر از بارش برف را ببینید:
میشه گفت ساخت همچین انیمیشینی بدون استفاده از جاوا اسکریپت برای انیمیشن
، تقریبا غیرممکنه.
آموزش انیمیشن با جاوا اسکریپت
همونطور که گفتیم ساخت انیمیشن در javascript یکی از جالبترین قسمتهای این زبان برنامه نویسیه. شما میتونید با جاوا اسکریپت انیمیشنهای پیچیدهای بسازید. به عنوان مثال شما میتونید با استفاده از جاوا اسکریپت برای انیمیشن المانهای زیر را طراحی کنید:- Fireworks
- افکتFade
- Roll-in یا Roll-out
- Page-in یا Page-out
- حرکات اشیا
- setTimeout( function, duration): این تابع function را بعد از گذشت زمان duration از الان به بعد صدا میزنه.
- setInterval(function, duration): این تابع هم function را بعد از گذشت هر duration زمان، فراخوانی میکنه.
- clearTimeout(setTimeout_variable): این تابع هر تایمری که در تابع setTimeout() تنظیم شده بود را حذف میکنه.
// تنظیم فاصله از گوشهی سمت چپ صفحه. object.style.left = distance in pixels or points; or // تنظیم فاصله از گوشهی سمت بالای صفحه object.style.top = distance in pixels or points;
خب در این بخش از
آموزش انیمیشن با جاوا اسکریپتمیریم سراغ چنتا مثال کاربردی تا ببینید که چطور میشه آبجکتهای DOM را تغییرشون داد و چگونه در جاوا اسکریپت انیمیشن بسازیم.
آموزش انیمیشن با جاوا اسکریپت به روش دستی
بیاید یه انیمیشن با استفاده از ویژگیهای آبجکت DOM و توابع جاوا اسکریپت بسازیم. این کد انیمیشن در جاوا اسکریپتاز بخشهای زیر درست شده:
- از یک تابع getElementById() برای گرفتن آبجکت DOM و تخصیص آن به متغیر گلوبال imgObj استفاده میکنیم.
- یک تابع init() برای مقداردهی اولیهی imgObj استفاده میکنیم تا position و فاصلهی آیتم از چپ را ست کنیم.
- تابع moveRight() برای افزایش فاصلهی آیتم از سمت چپ تا 10 پیکسل استفاده میشه. اگه بخواین به سمت چپ حرکت کنه آیتمتون میتونید این مقدارو منفی بزارید.
خروجی این کد یه تصویر گیفه که با هر بار کلیک روی دکمهی Click Me ده پیکسل به سمت راست حرکت میکنه. به خاطر این میگیم دستی چون هر بار حرکت المان دست خودمونه و خودش حرکتی نمیکنه. ولی میتونیم یه جوری کد را بنویسیم که المان خودش به شکل خودکار حرکت کنه.JavaScript Animation
آموزش انیمیشن با جاوا اسکریپت به روش خودکار
توی مثال بالا دیدیم که حرکت آیتم با هر بار کلیک انجام میشد، حالا میخوایم این حرکت را خودکارش کنیم. برای این کار از تابع setTimeout() که در بالا توضیح دادیم استفاده میکنیم. کاری میکنیم اینه:- توی تابع moveRight() یه تابع setTimeout() فراخوانی میکنیم که پوزیشن imgObj را ست کنه.
- یه تابع stop() هم اضافه میکنیم که تایمر ست شده توی setTimeout() را پاک کنه و آبجکت را به پوزیشن اولش ببره.
خروجی این مثال هم یه گیفه که با زدن روی دکمه Start شروع به حرکت به سمت راست میکنه و با زدن روی Stop برمیگرده سر جای اولش.JavaScript Animation
آموزش انیمیشن با جاوا اسکریپت با استفاده از mouse event
یکی از کارهای دیگهای که میشه برای انیمیشن جاوا اسکریپت انجام داد اینه که یه اتفاقی با حرکت موس ما بیفته که اصطلاحا بهش میگن mouse event. مثلا بخوایم وقتی موس روی آبجکت تصویر ما میره یه rollover انجام بشه. برای این مثال کارهای زیر را انجام میدیم:- قبل از هر چیز موقع لود صفحه باید چک کنیم که آبجکت تصویر ما وجود داشته باشه؛ در غیر این صورت اجرا متوقف بشه. برای این کار از شرط if استفاده شده.
- کانستراکتور Image() برای ما یه آبجکت تصویر میسازه و اسم اونو image1 میزاره.
- یه فایل گیف به این آبجکت اختصاص میدیم. یه فایل گیفت هم برای آبجکت تصویر دوممون تخصیص میدیم.
- از # برای این هدف استفاده کردیم که لینک روی عکس را غیرفعال کنیم. یعنی قرار نیست وقتی کاربر روی لینک کلیک میکنه جایی هدایت بشه.
- با استفاده از onMouseOver پیگیری میکنیم که کاربر موسش را روی لینک تصویر برده یا خارج از لینک قرار داره.
- وقتی موس روی تصویر قرار میگیره، HTTP عکس از تصویر اول به تصویر دوم تغییر میکنه. وقتی موس از روی تصویر کنار بره، مجددا تصویر اول نمایش داده میشه.
برای این مثال به شکل زیره:
خروجی شم همونطور که گفتیم یه تصویره که با حرکت موس روی اون به یه تصویر دیگه تغییر میکنه و وقتی موس را برمیداریم مجددا تصویر اول نمایش داده میشه. این آپشن را توی صفحه سازها زیاد استفاده میکنن.Rollover with a Mouse Events Move your mouse over the image to see the result
![]()
کتابخانه های ساخت انیمیشن با جاوا اسکریپت
همونطور که گفتیم برای ساخت انیمیشن در جاوا اسکریپت این زبان کتابخانههای زیادی داره. این کتابخانهها اونقدر کار طراحی انیمیشن در جاوا اسکریپت را راحت کردند که هر برنامه نویس مبتدی هم میتونه این کار را راحت یاد بگیره و انجام بده. مثلا شما می تونید با استفاده از کتابخانه ی three.js انیمیشن های سه بعدی خودتون رو بسازید . کتابخانه ای که با استفاده از اون میتونید انسان ، شی ، حیوان و هر چیزی رو که میبیند به صورت سه بعدی روی مرورگرتون پیاده سازی کنید. البته این کتابخونه با کمک WebGL میتونه انیمیشن های سه بعدی بسازه .شاید بپرسید WebGL دیگه چیه ؟در واقعWebGL یا Web Graphics Library یک کتابخانه ی انیمیشن جاوا اسکریپت هست که ساخت تصاویر و انیمیشن های دو بعدی و سه بعدی را امکان پذیر میکنه. در اصل شما با three.js و با کمک WebGL می توانید تصاویر دو بعدی و سه بعدی بسازید . حالا بریم سراغ معرفی این کتابخانهی ساخت انیمیشن جاوا اسکریپت یعنی همون three.js و بیشتر با این کتابخونه ی عجیب غریب آشنا بشیم . Three.js یک کتابخانه متشکل از مرورگر JavaScript و رابط برنامه نویسی برنامه (API) است که برای ایجاد و نمایش گرافیک کامپیوترهای متحرک سه بعدی در یک مرورگر وب استفاده می شود. همونطور که گفتیمThree.js از WebGL استفاده می کند. کد منبع اون در مخزنی داخل GitHubمیزبانی میشه. شما واسه این که انیمیشن بسازید بیشتر نیاز به Three.js دارید ولی بهتره WebGL رو هم در حد متوسط بلد باشید. منظورم اینه که حرف اصلی رو Three.js میزنه پس برای ساخت انیمیشن در جاوا اسکریپت زیاد نگران WebGLنباشید .
نمونه هایی از انیمیشن هایه سه بعدی با Three.js :
اگه می خواید مثال بالا رو کداش رو ببینید و خودتون امتحانش کنید ،به این
لینکبرید
اینم مثال جالبی هستش . میتونید خودتون تو این لینک
امتحانش کنید
این انیمیشن جاوا اسکریپت هم جالبه کداش هم تو این لینک
هستش شاید خیلی عجیب باشه واسه شما که واقعا این انیمیشن ها با کد انیمیشن در جاوا اسکریپت درست شده ؟؟ یعنی این انیمیشن ها کد هستند و کد ها به این شکل واقعا در میان ؟؟ جواب دو سوال شما بله هستش ولی عجیب تر اینه که این انیمیشن ها 60Fps هستند .
انیمیشن سازی با جاوااسکریپت به اینجا ختم نمیشه و کلی کتابخونه عجیب غریب واسه این کار ساخته شده ولی اصل کاری که از همه مهم تر بود همین three.js بود. ولی من اینجا چند تا کتابخونه جاوااسکریپت دیگه واستون معرفی میکنم :
کتابخانه GSAP
کتابخانه GreenSock JS
یا همون GSAP یکی دیگر از کتابخانه های انیمیشن سازی است که کامل بر روی کدهای جاوااسکریپت سوار است . این کتابخانه رو تمام مرورگر های جدید پشتیبانی میکنه و یه تیم دائما در حال برورزکردن این کتابخونه هستند. این کتابخونه حتی میتونه با Three.js در انیمیشن سازی برابری کنه چون GSAP انعطاف پذیر هستش و با VueJS ، ReactJS ، VanillaJS و Angular کار می کند.
کتابخانه Typed.JS
یه چیزی که خیلی نظر ما رو جلب کرده تو خیلی از سایت ها تایپ شدن خودکار کلمات ؟؟!! این تایپ خودکار کار یکی از کتابخونه های جاوااسکریپت به نام Typed.JS هستش که یکی از قابلیت هاش اینه که میتونید سرعت تایپ را کنترل کنید . کارکردن با این کتاب خونه خیلی راحته . شما میتونید متن مورد نظرتون رو تو تگ div قرار بدید و از این کتابخونه بخواید که واستون تایپ کنه .
به خاطر همینه که این کتابخونه تو گیت هاب ۶۰۰۰ ستاره داره . متاسفانه آموزش فارسی واسه این کتابخونه ها وجود نداره و بهترین منبع آموزشی انگلیسی اینا خود سایت کتابخونه هستش . پیش نیاز یادگیری این کتابخونه ها جاوااسکریپت هستش و شما باید متوسط به بالا به JS مسلط باشید. خوشبختانه ماآموزش جاوااسکریپت
رو واستون تو سایتمون قرار دادیم.
حرف آخر
جاوا اسکریپت زبان قدرتمندیه و کارهای زیادی میشه با اون انجام داد. ساخت انیمیشن در javascriptیکی از جذابترین اوناس. کتابخانههای متعددی برای
ساخت انیمیشن با جاوا اسکریپتطراحی شدند که میتونید از هر کدوم اونها استفاده کنید. یادگیری انیمیشن جاوا اسکریپت اصلا کار سختی نیست چون در این کتابخانهها تابعهای آماده برای کارهای مختلف قرار گرفته و با استفاده از اونا با چند خط
کد انیمشین در جاوا اسکریپتمیتونید جلوههای قشنگی به صفحات وب خودتون بدین.
توی این مقاله ما چند راه ساده برای
ساخت انیمیشن در جاوا اسکریپترا بررسی کردیم و گفتیم که با کمک لایبرریهای انیمیشن چگونه در جاوا اسکریپت انیمیشن بسازیم تا شما هم بتونید به بهترین شکل انیمیشناتون را توی جاوا اسکریپت طراحی کنید.
سوالات متداول- آیا میتونیم تصاویر jpg را در جاوا اسکریپت انیمیت کنیم؟
- منظور از دکمهی Rollover در جاوا اسکریپت چیست؟
- بهترین کتابخانههای انیمیشن در جاوا اسکریپت کدامند؟
- js
- AOS (Animate On Scroll)
- js
- js
- js
- Js
- بهترین کتابخانه های انیمیشن در جاوا اسکریپت برای ری اکت کدام کتابخانهها هستند؟
- Remotion
- Framer Motion
- React Motion
- React-Spring
- React Move
- بهترین کتابخانه های انیمیشن در جاوا اسکریپت برای انگولار کدام کتابخانهها هستند؟
- angular-dragdrop
- angular-scroll
- angular-ui-notification
- ng-lottie
- angular-count-to
- bower-angular-animate
- ng-bs-animated-button
مقالات مرتبط
نظرات
اولین نفری باش که برای این مقاله نظر میدی.
