در این قسمت، دو بخش مهم دیگر از ابزار افکت ها در jQuery را می آموزید. ابتدا در رابطه با sliding یا افکت های slide مطالبی را ارائه می کنیم و سپس ساختن انیمیشن یا animate در جی کوئری را با هم یاد می گیریم.
از متدهای ()slideUp و ()slideDown جهت پنهان کردن و آشکار کردن عناصر html در jQuery استفاده می کنیم. این مکانیزم با تغییر مقدار خاصیت ارتفاع (height) انجام می شود. در کد مثال زیر کاربرد متدهای ()slideDown و ()slideUp را مشاهده می کنید:
<script> $(document).ready(function(){ // Slide up displayed paragraphs $(".up-btn").click(function(){ $("p").slideUp(); }); // Slide down hidden paragraphs $(".down-btn").click(function(){ $("p").slideDown(); }); }); </script>
مانند سایر متدهای مرتبط با افکت های jQuery، می توانید برای متدهای مثال بالا متغیر duration یا speed را جهت کنترل زمان اجرای متدها و این که اجرای متدهای slideUp و slideDown چقدر طول بکشد، در نظر بگیرید.
جهت تعیین مقدار پارامتر duration می توانید از مقادیر پیش فرض "fast" و "slow" یا از عددی در واحد میلی ثانیه بهره ببرید. هر چقدر مقدار این عدد بیشتر باشد، افکت مورد نظر یا اجرای متدهای بالا بیشتر طول می کشد.
در کد مثال زیر کاربرد این پارامتر را در متدهای slideUp و slideDown مشاهده می کنید:
<script> $(document).ready(function(){ // Sliding up displayed paragraphs with different speeds $(".up-btn").click(function(){ $("p.normal").slideUp(); $("p.fast").slideUp("fast"); $("p.slow").slideUp("slow"); $("p.very-fast").slideUp(50); $("p.very-slow").slideUp(2000); }); // Sliding down hidden paragraphs with different speeds $(".down-btn").click(function(){ $("p.normal").slideDown(); $("p.fast").slideDown("fast"); $("p.slow").slideDown("slow"); $("p.very-fast").slideDown(50); $("p.very-slow").slideDown(2000); }); }); </script>
همچنین شما می توانید از توابع callback استفاده کنید که بعد از متدهای slideDown و slideUp اجرا می شوند. در قسمت های بعدی مطالب بیش تری را راجع به توابع callback مشاهده خواهید کرد.
در کد مثال زیر کاربرد توابع callback را در متدهای slideDown و slideUp مشاهده می کنید:
<script> $(document).ready(function(){ // Display alert message after sliding up paragraphs $(".up-btn").click(function(){ $("p").slideUp("slow", function(){ // Code to be executed alert("The slide-up effect is completed."); }); }); // Display alert message after sliding down paragraphs $(".down-btn").click(function(){ $("p").slideDown("slow", function(){ // Code to be executed alert("The slide-down effect is completed."); }); }); }); </script>
متد ()slideToggle بنابر حالت اولیه عنصر html عملکرد خود را نشان می دهد؛ اگر عنصر مربوطه در حالت اولیه پنهان باشد، با افزایش ارتفاع عنصر آشکار می شود و اگر عنصر html در حالت اولیه آشکار باشد، با کاهش ارتفاع عنصر مربوطه پنهان می شود. در واقع متد ()slideToggle بین دو متد ()slideUp و ()slideDown جابجا می شود.
در کد مثال زیر استفاده از این متد را مشاهده می کنید:
<script> $(document).ready(function(){ // Toggles paragraphs display with sliding $(".toggle-btn").click(function(){ $("p").slideToggle(); }); }); </script>
متد ()slideToggle نیز مانند متدهای ()slideUp و ()slideDown می تواند از پارامتری جهت تعیین سرعت اجرای متد استفاده کند. مثال این کاربرد در کد زیر آمده است:
<script> $(document).ready(function(){ // Slide Toggles paragraphs with different speeds $(".toggle-btn").click(function(){ $("p.normal").slideToggle(); $("p.fast").slideToggle("fast"); $("p.slow").slideToggle("slow"); $("p.very-fast").slideToggle(50); $("p.very-slow").slideToggle(2000); }); }); </script>
همچنین به طور مشابه دو متد ()slideUp و ()slideDown در متد ()slideToggle نیز می توانید از توابع callback با همان کاربرد استفاده کنید. در نمونه زیر از تابع callback در متد ()slideToggle استفاده شده است:
<script> $(document).ready(function(){ // Display alert message after slide toggling paragraphs $(".toggle-btn").click(function(){ $("p").slideToggle(1000, function(){ // Code to be executed alert("The slide-toggle effect is completed."); }); }); }); </script>
در ادامه این قسمت به مبحث انیمیشن در جی کوئری می پردازیم و می آموزید که چطور با استفاده از خاصیت های css و jQuery انیمیشن بسازید.
جهت ساخت انیمیشن های سفارشی سازی شده از متد animate در جی کوئری استفاده می شود. به صورت معمول از متد ()animate در جهت تغییر خواص css که عددی هستند مانند height ،width ،margin ،padding ،opacity ،top ،left و ... برای ایجاد انیمیشن در جی کوئری استفاده می شود. اما خواص غیر عددی در css مانند color یا background-color با قابلیت پایه ای jQuery در انیمیشن بکار گرفته نمی شوند.
توجه: همه خواص css قابلیت انیمیشن سازی ندارند. به طور عمومی هر خاصیت css که عددی، درصدی یا مقدار رنگ را نشان می دهد، قابلیت بکارگیری در انیمیشن ها را دارند. اما انیمیشن رنگ ها توسط کتابخانه core jQuery پشتیبانی نمی شود. برای دستکاری و استفاده از رنگ ها در انیمیشن ها می توانید از jQuery Color Plugin استفاده کنید.
ساختار پایه متد animate در جی کوئری به صورت زیر است:
$(selector).animate({ properties }, duration, callback);
حالا پارامترهای بکار رفته در ساختار بالا را بررسی می کنیم:
کد مثال زیر، نمونه ای از کاربرد متد ()animate در jQuery می باشد. در واقع کد زیر که انیمیشنی ایجاد می کند به این صورت عمل می کند که با کلیک کردن بر روی دکمه، 300 پیکسل عکس را از مکان اصلی خودش به سمت راست می برد.
<script> $(document).ready(function(){ $("button").click(function(){ $("img").animate({ left: 300 }); }); }); </script>
نکته: همه عناصر html به صورت پیش فرض دارای پوزیشن استاتیک هستند. زمانی که یک عنصر پوزیشن استاتیک دارد، نمی توانید آن را به حرکت در آورید. بنابراین در صورتی که بخواهید آن عنصر را در انیمیشن به حرکت درآورید، باید صفت position آن عنصر را به fixed ،relative یا absolute تغییر دهید.
شما می توانید به صورت یکجا متد ()animate را به چند خاصیت css اعمال کنید. به همین منظور می توانید چند خاصیت css را با هر مقداری انتخاب و با آن ها انیمیشن ایجاد کنید.
مثال زیر نمونه ای از این کاربرد می باشد:
<script> $(document).ready(function(){ $("button").click(function(){ $(".box").animate({ width: "300px", height: "300px", marginLeft: "150px", borderWidth: "10px", opacity: 0.5 }); }); }); </script>
توجه: توجه کنید که نامگذاری صفات css هنگامی که در متد ()animate استفاده می شوند باید به صورت camel-case باشند. بنابراین مثلا هنگامی که بخواهید صفت font-size را در متد ()animate بکار ببرید، باید به صورت fontSize بنویسید، یا margin-left را به صورت marginLeft بنویسید و یا border-width را به صورت borderWidth بنویسید.
نکته: صفت border-style را قبل از border-width در متد ()animate بکار ببرید زیرا این ترتیب مهم است. مقدار پیش فرض برای border-style مقدار none در نظر گرفته می شود.
می توانید هنگام بکارگیری صفات css در متد ()animate، آن ها به صورت صفی و یک به یک در ()animate اعمال کنید. در واقع سری دستورات ()animate به یکدیگر متصل می شوند. در قسمت بعدی مطالب بیش تری راجع به اتصال دستورات مشاهده خواهید کرد.
در کد مثال زیر یک سری انیمیشن متصل را مشاهده می کنید که هر انیمیشن از نقطه پایانی انیمیشن قبلی شروع می شود:
<script> $(document).ready(function(){ $("button").click(function(){ $(".box") .animate({width: "300px"}) .animate({height: "300px"}) .animate({marginLeft: "150px"}) .animate({borderWidth: "10px"}) .animate({opacity: 0.5}); }); }); </script>
شما می توانید به کمک مقادیر نسبیِ خواصی که می خواهید آن ها را در انیمیشن بکار ببرید، انیمیشن ایجاد کنید. وقتی مقدار خاصیتی با مقدار پیش فرض "=+" یا "=-" آغاز شود، مقدار نهایی در انیمیشن با در نظر گرفتن (اضافه کردن یا کم کردن) مقدار کنونی یک صفت خاص در نظر گرفته می شود.
در مثال زیر این کاربرد را مشاهده می کنید:
<script> $(document).ready(function(){ $("button").click(function(){ $(".box").animate({ top: "+=50px", left: "+=50px", width: "+=50px", height: "+=50px" }); }); }); </script>
علاوه بر مقادیر عددی، هر صفتی می تواند مقادیر پیش فرض "show"، "hide" و "toggle" را بپذیرد. این عملکرد در زمانی بسیار سودمند است که بخواهید یک خاصیت را در animate از حالت کنونی به حالت اولیه ببرید یا عکس این کار را انجام دهید.
در کد زیر این کاربرد را مشاهده کنید:
<script> $(document).ready(function(){ $("button").click(function(){ $(".box").animate({ width: 'toggle' }); }); }); </script>
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.