در گذشته برای ایجاد انیمیشنی قدرتمند که قادر به کنترل تصاویر و متنها بصورت کامل باشد از محیط Flash استفاده میگردید. این محیط به توسعه دهندگان وب این امکان را میداد تا بتوانند تصاویر متحرک و افکتهای زیبا را به درون صفحات وب خود بیاورند اگرچه استفاده از این امکان برای ما معضلاتی نظیر ضعفهای امنیتی و همچنین زمان طولانی بارگذاری صفحات وب در زمانی که شما از سرعت اینترنت متوسط استفاده میکردید به دنبال داشت.
بعد از مدتی JavaScript و بدنبال آن کتابخانه های وابسته به آن نظیر jQuery ،Prototype و Moo tools برای ایجاد تصاویر متحرک آمدند که بسیاری از ضعفهای Flash را پوشش می دادند و جلوهای غنی انیمیشن را با حجمهای بسیار کمتر ایجاد می کردند. در سالهای اخیر عنصر جدیدی برای ایجاد تصاویر متحرک در وب بنام CSS3 پا به عرصه گذاشته که مزایای خوبی نظیر افزایش سرعت بعلت استفاده از بارگذاری مستقیم توسط مرورگر را در اختیار ما قرار می دهد. ما در این مقاله سعی داریم تا مقایسه ای میان CSS و jQuery در جهت تولید تصاویر متحرک انجام دهیم.
ایجاد یک انیمیشن در CSS
قبل از بررسی این موضوع در صورتی که آشنایی قبلی با انیمیشن سازی با استفاده از CSS ندارید توصیه میکنم تا با مرور مطالبی آموزشی در سایتهایی نظیر W3Schools.com با مقدمات اینکار آشنا شوید. همچنین وقتی بنده از واژه انیمیشن در قسمت CSS استفاده میکنم منظورم هر دو مورد CSS Transitions و CSS Animations است، هرچند که کاربرد آنها با هم تفاوت دارد. Transitionها رخداد محور بوده و با رخدادهایی نظیر :hover و یا :active فعال میگردند در صورتی کهAnimationها پیچیده تر بوده و بصورت خطی در هنگام بارگذاری صفحه اجرا میشوند ( هرچند میتوان آنها را توسط JavaScript نیز کنترل کرد).
لطفا به مثال ذیل توجه فرمایید، در این مثال سعی شده تا افکت محو شدن در jQuery ( .fadeIn())
شبیه سازی شود.
HTML
CSS
#example1{
width:5em;
height:10em;
background:blue;
animation:fadeIn 5s;
}
@keyframes fadeIn{
from {opacity:0;}
to {opacity:100;}
}
در مثال بالا سعی شده تا تمرکز اجرا بر روی مرورگرهای امروزی باشد و در صورتی که بخواهیم این مورد را به مرورگرهای قدیمی نیز تعمیم دهیم باید از پیشوندهایی نظیر –webkit- ، -moz- و… در تعریف انیمیشن خود استفاده نماییم. همچنین استفاده از نام fadeIn صرفا جهت هم نام سازی با jQuery بوده و شما میتوانید هر نام دلخواه دیگری را نیز برای انیمیشن خود انتخاب کنید.
ایجاد انیمیشن با استفاده از jQuery
حال که شما در مثال بالا اندکی با اساس تولید تصاویر متحرک در CSS آشنا شدید، بهتر است نمونه ای مشابه با کمک jQuery نیز بررسی شود. در مثال ذیل سعی شده تا با استفاده از رخداد .click و همچنین قابلیت .animate() عملیات بالا را اجرایی کنیم. در ابتدا با کمک CSS شی خود را طراحی کرده سپس با jQuery مراحل ظاهر شدن و همچنین زمان اجرای آنرا کنترل خواهیم کرد. لطفا دقت نمایید که قابلیت animate() در jQuery قادر به ایجاد تغییرات صرفا در خصوصیاتی از CSS میباشد که بصورت عددی مقدار دهی شده اند . بطور مثال ما قادر نیستیم که خصوصیت رنگ پس ضمینه را تغییر دهیم. برای اینکار میتونید مثلا از jQuery UI کمک بگیرید.
HTML
CSS
#example2{
width:0;
height:0;
overflow:hidden;
background:blue;
}
jQuery
$(‘#button’).click(function() {
$(‘#example2’).animate({
height: “10em”,
width: “5em”,
opacity: “100”,}, 4000
});
});
برای اجرای فرمان فوق شما باید کتابخانه jQuery را نیز در صفحه خود وارد نمایید.
همانطور که در بالا مشاهده مینمایید پیاده سازی انیمشن با CSS به مراتب سبکتر و ساده تر است. همچنین برای مقایسه بهتر ما با پیاده سازی یک محک که در آن چندین عنصر بصورت همزمان توسط CSS3 و همچنین jQuery دستخوش تغییر میگردند به نتایج بهتری می رسیم.
CSS
مدت زمان اجرای این محک تقریبا 2.29 ثانیه
jQuery
مدت زمان اجرای این محک تقریبا 8.33 ثانیه
محک فوق نشان میدهد که CSS بصورت کاملا آشکاری سریعتر از jQuery در اجرای تصاویر متحرک میباشد. علت این امر بخاطر آن است که CSS مستقیما از ساختارهای بومی خود مرورگر برای اجرای فرایند متحرک سازی استفاده می کند و این امکان را خواهد داشت تا دستورات گرافیکی را بکمک GPU سیستم به مورد اجرا بگذارد.
البته در این بین CSS نقاط ضعفی نیز دارد بطور مثال در هنگامی که یک شکل ثابت، هم در حال حرکت و هم تغییر سایز است، شما نمی توانید این عملیات را در دو قالب زمانی مختلف و همزمان به اجرا در آورید در حالی که jQuery این ضعف را ندارد.
نتیجه گیری
بدلیل برتری هایی که در بالا بیان گردید، میتوان نتیجه گرفت که CSS عنصر مناسبتری جهت اجرای طرحهای متحرک وب می باشد. همچنین بهتر است در صورتی که تمایل به استفاده از امکانات JavaScript در اجرای انیمیشن را دارید، از JavaScript Dom و یا از کتابخانه Velocity.js و یا GSAP که دارای کارایی بمراتب بهینه تری هستند استفاده نمایید.
مجتمع فنی تهران نمایندگی سید خندان
لیست دوره های ارائه شده در دپارتمان وب و برنامه نویسی
ردیف | عنوان دوره | روزهای تشکیل | تاریخ شروع | تعداد ساعت | شهریه (ریال) | توضیح | پیش نیاز | |
---|---|---|---|---|---|---|---|---|
1 | Web Design I (HTML5, CSS3 with Dreamweaver) | یکشنبه, سه شنبه 17:30 تا 20:30 | 03-08-27 | 58 | 43,000,000 | |||
2 | Web Design I ( HTML5, CSS3 with Dreamweaver) آنلاین | یکشنبه, سه شنبه 17:30 تا 20:30 | 03-08-27 | 58 | 34,000,000 | |||
3 | Web Design II (Responsive Design with Bootstrap, Less & Sass) | پنجشنبه 14:30 تا 18:00 | 03-09-01 | 34 | 39,000,000 | |||
4 | Web Design III (JavaScript & JQuery & Ajax) | پنجشنبه 13:00 تا 18:00 | 03-08-24 | 58 | 70,000,000 | |||
5 | Web Design III (JavaScript & jQuery & Ajax) آنلاین | پنجشنبه 13:00 تا 18:00 | 03-08-24 | 58 | 57,000,000 | |||
6 | Web Design III (JavaScript & JQuery & Ajax) | جمعه 13:00 تا 20:00 | 03-09-16 | 58 | 70,000,000 | |||
7 | Web Design III (JavaScript & jQuery & Ajax) آنلاین | جمعه 13:00 تا 18:00 | 03-09-16 | 58 | 57,000,000 | |||
8 | مقدمه ای بر الگوریتم و برنامه نویسی آنلاین | شنبه, دوشنبه 17:30 تا 20:30 | 03-08-19 | 40 | 22,000,000 | |||
9 | مقدمه ای بر الگوریتم و برنامه نویسی | شنبه, دوشنبه 17:30 تا 20:30 | 03-08-19 | 40 | 26,000,000 | |||
10 | مقدمه ای بر الگوریتم و برنامه نویسی آنلاین | یکشنبه, سه شنبه 14:30 تا 17:30 | 03-08-29 | 40 | 22,000,000 | |||
11 | مقدمه ای بر الگوریتم و برنامه نویسی | یکشنبه, سه شنبه 14:30 تا 17:30 | 03-08-29 | 40 | 26,000,000 | |||
12 | Wordpress & SEO PACK | یکشنبه, سه شنبه 17:30 تا 20:30 | 03-08-20 | 75 | 85,000,000 | |||
13 | Programming with Python | پنجشنبه 13:00 تا 18:00 | 03-08-24 | 60 | 64,000,000 | |||
14 | (آنلاین) programming with python | پنجشنبه 13:00 تا 18:00 | 03-08-24 | 60 | 51,000,000 | |||
15 | Programming with Python | جمعه 13:00 تا 18:00 | 03-09-02 | 60 | 64,000,000 | |||
16 | Programming with Python | یکشنبه, سه شنبه 17:30 تا 20:30 | 03-09-04 | 60 | 64,000,000 | |||
17 | (آنلاین) programming with python | یکشنبه, سه شنبه 17:30 تا 20:30 | 03-09-04 | 60 | 51,000,000 | |||
18 | Python Web Development With Django | جمعه 08:00 تا 13:00 | 03-08-25 | 50 | 59,000,000 | |||
19 | Data Analysis with Python | جمعه 14:00 تا 18:00 | 03-08-25 | 30 | 33,000,000 | |||
20 | Machine Learning with Python | جمعه 08:00 تا 13:00 | 03-08-25 | 50 | 55,000,000 | |||
21 | بهینه سازی برای موتورهای جست و جو- SEO | پنجشنبه 16:00 تا 20:00 | 03-08-24 | 40 | 66,000,000 | |||
22 | دوره طراحی رابط و تجربه کاربری (UI/UX) | پنجشنبه 13:00 تا 17:00 | 03-08-24 | 40 | 47,000,000 | |||
23 | C# Programming | پنجشنبه 13:00 تا 18:00 | 03-08-24 | 60 | 59,000,000 | |||
24 | C# Programming آنلاین | پنجشنبه 13:00 تا 18:00 | 03-08-24 | 60 | 48,000,000 | |||
25 | برنامه نویسی به زبان ++C | جمعه 13:00 تا 18:00 | 03-08-25 | 60 | 48,000,000 | |||
26 | برنامه نویسی به زبان ++C آنلاین | جمعه 13:00 تا 18:00 | 03-08-25 | 60 | 39,000,000 | |||
27 | PHP & MYSQL Web Development | جمعه 13:00 تا 18:00 | 03-09-02 | 80 | 79,000,000 | |||
28 | Java SE8 Programming | جمعه 13:00 تا 18:00 | 03-08-25 | 50 | 54,000,000 | |||
29 | Android Pack | پنجشنبه 13:00 تا 18:00 | 03-08-24 | 70 | 74,000,000 | |||
30 | SQL Server 2022 Database Development | یکشنبه, سه شنبه 17:30 تا 20:30 | 03-08-29 | 60 | 59,000,000 | |||
31 | SQL Server 2022 Database Development آنلاین | شنبه 19:00 تا 22:00 | 03-09-03 | 60 | 51,000,000 | |||
32 | Microsoft ASP.net MVC | جمعه 08:00 تا 13:00 | 03-09-02 | 60 | 92,000,000 |