نام فناوری کشیدن و رها کردن به صورت ترجمه شده است. تکنیک Drag-n-Drop با استفاده از jQuery. تنظیم تعامل Droppable

کشیدن و رها کردن یکی از راه های به اشتراک گذاری داده ها بین برنامه ها است. این روش تبادل توسط بسیاری از نرم افزارهای کاربردی استفاده می شود. برای مثال، اغلب فایل‌ها و پوشه‌ها از این طریق منتقل می‌شوند.

کتابخانه اجزای بصری - VCL نسخه مخصوص به خود Drag&Drop را پیاده‌سازی می‌کند، فناوری که دریافت و انتقال هر عنصر کنترلی را در همان فرم فراهم می‌کند. با این استفاده داخلی، VCL به سیستم عامل دسترسی ندارد، هرچند برای ارتباط برنامه های کاربردی مختلفباید از توابع مناسب Windows API استفاده کرد.

کاربر بر روی کلیک می کند دکمه سمت چپماوس، می تواند یک عنصر کنترلی (شیء منبع) را روی عنصر دیگر (شیء مقصد) بکشد. در لحظه‌های کشیدن و رها کردن، رویدادهایی تولید می‌شوند که برنامه باید آنها را پردازش کند (گیرنده رویداد عنصری است که نشانگر ماوس روی آن قرار دارد). ویژگی DragMode اجزاء مسئول مشارکت آنها در فرآیند تبادل داده است.

DragMode=dmAutomatic- رویدادها به طور خودکار فعال می شوند، برنامه نویس فقط کدهای مربوط به کنترل کننده رویداد را می نویسد.

DragMode=dmManual-برنامه نویس باید تمام تماس ها را خودش سازماندهی کند.

کشیدن رویدادها

رویداد OnDragOverزمانی اتفاق می افتد که نشانگر ماوس روی شی مقصد حرکت می کند و همچنین زمانی که دکمه روی این شی آزاد می شود.

پارامترهای رویداد:

    شی فرستنده - گیرنده (مکان نما بالای آن است).

    منبع - شی منبع؛

    X,Y - مختصات ماوس در سیستم ناحیه مشتری شیء فرستنده.

    State- State (دارای یکی از سه مقدار dsDragEnter - نشانگر ماوس روی عنصر ظاهر شد؛ dsDragMove مکان نما روی عنصر حرکت می کند؛ dsDragLeave - مکان نما عنصر را ترک کرد یا دکمه روی عنصر رها شد).

    Accept یک متغیر بولی است. در این متغیر، کنترل کننده باید تصمیم خود مبنی بر پذیرش یا عدم پذیرش شی منبع را بازگرداند.

به عنوان مثال، یک جزء کلاس Label(Name=Label1) فقط باید اجزای کلاس Shape (اشکال هندسی) را بپذیرد، سپس کنترل کننده آن شامل بررسی شی منبع قابل حمل (Source) خواهد بود:

void __fastcall TForm1::Label1DragOver(TObject *فرستنده، TObject *منبع،

int X، int Y، وضعیت TDragState، bool &Accept)

Accept=Source->ClassNameIs("TShape");

رویداد OnDragDropزمانی اتفاق می افتد که دکمه سمت چپ ماوس روی عنصری که آماده دریافت است رها می شود. پارامترهای Sender، Source، X و Y آن همان معنای رویداد قبلی را دارند. محتوای این کنترل کننده بستگی به عملکردهایی دارد که برنامه نویس به کاربر اجازه می دهد از طریق کشیدن و رها کردن انجام دهد. این ممکن است تغییر در مکان اشیاء، تبادل اطلاعات و غیره باشد.

در مثال زیر، حرکت فیزیکی اجسام وجود ندارد. مولفه Label1 یک اشاره گر به شی جابجا شده (شکل هندسی) دریافت می کند و مقادیر ویژگی ها (ارتفاع، عرض) را برای محاسبه محیط شکل می خواند. نتیجه محاسبه در Label1-> Caption قرار می گیرد.

void __fastcall TForm1::Label1DragDrop(TObject *Sender,

TObject *منبع، int X، int Y)

float p, pi=3.14; int w,h,r,D;

if (String(Source->ClassName())=="TShape")

h=((TShape *)منبع)->قد;

w= ((TShape *) Source)->Width ;

D=w; اگر (D > h) D = h;

سوئیچ (((TShape *) منبع) -> شکل)

( مورد strRectangle:

Label2->Caption "مستطیل";

Label2->Caption = "مربع";

Label2->Caption = "دایره";

Label2->Caption = "بیضی";

p=pi*(3*(w+h)/4-sqrt(w*h)/2);

case strRoundRect:

Label2->Caption = "گرد

مستطیل"؛

r=(D-((TShape*)منبع)->Pen->

p=2*(w+h)-8*r+2*pi*r;

Case strRoundSquare:

Label2->Caption="گرد

مربع"؛

r=(D-((TShape*)منبع)->Pen->

p=4*D-8*r+2*pi*r;

p=p/(Form1->PixelsPerInch/2.54);

Label1->Caption = FloatToStr(p);

هنگامی که فرآیند کشیدن به پایان می رسد، صرف نظر از نتیجه آن، شی اصلی دریافت می کند رویداد OnEndDrag. پارامترهای آن عبارتند از:

    فرستنده - اشاره گر شی منبع؛

    هدف - اشاره گر شی هدف.

    X، Y - مختصات مکان نما.

در مثال زیر، مؤلفه wrapper Shape1 نام شی مورد نظر را می‌آموزد (اگر شی مورد نظر پذیرفته نشود، NULL ارسال می‌شود):

void __fastcall TForm1::Shape1EndDrag(TObject *فرستنده، TObject *Target،

اگر (هدف != NULL)

Label2->Caption =(AnsiString) ((TComponent *) Target)->Name;

برای مدت طولانی، از توابع جاوا اسکریپت برای ایجاد قابلیت Drag&Drop استفاده می شد، اما مرورگرها همیشه نمی توانستند نتیجه را به درستی نمایش دهند. HTML 5 راهی برای پشتیبانی هوشمندانه Drag&Drop با کمی جاوا اسکریپت دارد. این مقاله یک مثال تصویری از استفاده از Drag&Drop در HTML 5 را شرح می دهد.

کشیدن و رها کردن رویدادها

موارد زیر رویدادهای Drag&Drop هستند که می توانید از آنها برای کنترل فرآیند کشیدن و رها کردن استفاده کنید:
  • dragStart: کاربر شروع به کشیدن عنصر می کند.
  • dragEnter: عنصری که کشیده می شود به عنصر انتهایی می رسد.
  • dragOver: نشانگر ماوس در حین کشیدن روی عنصر قرار دارد.
  • dragLeave: نشانگر ماوس عنصر کشیده شده را ترک می کند.
  • کشیدن: مکان نما در حین کشیدن حرکت می کند.
  • drop: افت عنصر اتفاق می افتد.
  • dragEnd: کاربر در حین کشیدن مکان نما ماوس را رها می کند.

شی انتقال داده

این جایی است که فرآیند کشیدن و رها کردن انجام می شود. مهمترین پارامترها:
  • dataTransfer.effectAllowed=value: نوع عملکرد موجود را برمی‌گرداند - هیچ، کپی، copyLink، copyMove، پیوند، انتقال، انتقال، همه، یا بدون مقدار اولیه.
  • dataTransfer.setData(فرمت، داده): داده ها را در قالب دلخواه اضافه می کند.
  • dataTransfer.clearData(format): داده ها را پاک می کند.
  • dataTransfer.setDragImage(عنصر، x، y): تصویر را تنظیم می کند که در مختصات مکان نما (0، 0 - گوشه سمت چپ بالا) کشیده شود.
  • data = dataTransfer.getData(format): داده ها را برمی گرداند.

مثال کشیدن و رها کردن

حالا بیایید به یک مثال ساده بصری استفاده از Drag&Drop نگاه کنیم، که در آن دو div کوچک آبی را می‌توان به یک قرمز بزرگ منتقل کرد و همچنین به جای اصلی خود بازگرداند.
شروع به کشیدن یک شی کنید
اول از همه، شما باید با افزودن ویژگی dragable، نشانه گذاری HTML را برای بلوک ها ایجاد کنید:


سپس یک تابع فرآیند شروع جاوا اسکریپت تعریف کنید:

تابع dragStart(ev) ( ev.dataTransfer.effectAllowed="move"; ev.dataTransfer.setData("Text"، ev.target.getAttribute("id")); ev.dataTransfer.setDragImage(ev.target,100,100) ؛ بازگشت واقعی؛ )
خط اول نوع احتمالی کشیدن و رها کردن - حرکت را مشخص می کند، دوم - داده های فرآیند - نوع (Text) و ID را تنظیم می کند. در خط سوم، setDragImage موقعیت مکان نما را تعیین می کند، در این مورد در وسط یک مربع 200x200 پیکسل.

کشیدن یک شی را به پایان برسانید
شما باید سه رویداد را تنظیم کنید: dragEnter، dragOver و drop:


علاوه بر این، ما باید توابع جاوا اسکریپت را برای تکمیل فرآیند کشیدن اضافه کنیم - تا مشخص کنیم هنگام آزاد شدن مکان نما چه اتفاقی برای عناصر باید بیفتد:

تابع dragEnter(ev) ( event.preventDefault(); return true؛ ) تابع dragOver(ev) ( event.preventDefault(); )

در این مثال سادهفقط اقدامات اصلی تنظیم شده است، اما موارد دیگر را می توان اضافه کرد - تغییر رنگ پس زمینه، اضافه کردن متن و غیره. مرحله بعدی مرحله نهایی است. این جایی است که شما عمل کشیدن پایان را تنظیم می کنید:

تابع dragDrop(ev) ( var data = ev.dataTransfer.getData("Text"); ev.target.appendChild(document.getElementById(data)); ev.stopPropagation(); return false;)
همانطور که از مثال مشاهده می کنید، بلوک های آبی را می توان پس از کشیدن به جای اصلی خود بازگرداند. خوشبختانه انجام این کار بسیار آسان است. همه توابع اعلام شده اند، باید کد زیر را اضافه کنید:

نتیجه

بسیاری از راه‌حل‌های Drag&Drop با استفاده از کتابخانه‌های جاوا اسکریپت ایجاد شده‌اند و استفاده از آن‌ها اغلب آسان‌تر از مثال توصیف شده است. با این حال، به احتمال زیاد در آینده، دسته ای از HTML5 و جاوا اسکریپت بیشتر و بیشتر مورد استفاده قرار خواهند گرفت.

استفاده از تکنولوژی کشیدن و انداختن (کشیدن و انداختن) به کاربر اجازه می دهد تا اشیاء مختلف را از یکی به دیگری منتقل کند، به عنوان مثال، عناصر یک لیست به لیست دیگر. برای انجام این کار، باید از دو کنترل استفاده کنید: یک سینک و یک منبع. گیرنده شیئی است که شی مبدأ (شیء متحرک) را دریافت می کند.

رویدادهایی که در حین حرکت اجسام رخ می دهند به ترتیبی که رخ می دهند در زیر فهرست شده اند.

OnStartDrag(نوع TStartDragEvent) - توسط شی منبع در ابتدای عملیات تولید می شود. پارامترهای ارسال شده به کنترل کننده رویداد: شی گیرنده DragObject (نوع TDragObject)، شی منبع (نوع TObject).

OnDragOver(نوع TDragOverEvent) - هنگامی که یک شیء شناور بالای آن قرار می گیرد یک شی هدف ایجاد می کند. پارامترهای ارسال شده به کنترل کننده رویداد: شی گیرنده فرستنده (نوع TObject)، شی منبع منبع (نوع TObject)، وضعیت حرکت وضعیت (نوع TDragState)، X و Y (نوع عدد صحیح) - مختصات فعلی اشاره گر ماوس، پذیرش (نوع بولی) ) علامت تایید عملیات جابجایی. وضعیت حرکت مشخص می کند که آیا جسم مورد حرکت در ناحیه گیرنده است یا خیر، آیا در آن حرکت می کند، آن را ترک کرده است. پارامترهای ارسال شده به شی گیرنده اجازه می دهد تا شی منبع را بپذیرد یا رد کند. اگر عملیات جابجایی پذیرفته شود، پارامتر Accept روی Trye و در غیر این صورت False تنظیم می شود.

onDragDrop (نوع TDragDropEvent) - هنگامی که شیء کشیده شده روی آن رها می شود توسط شی مقصد بالا می رود. به کنترل کننده رویداد مختصات فعلی اشاره گر ماوس، شی گیرنده فرستنده (نوع TObject) و شی حرکت منبع اصلی (نوع TObject) داده می شود.

onEndDrag (نوع EndDragEvent) - هنگامی که عملیات کشیدن به پایان می رسد، افزایش می یابد. مختصات X و Y نقطه ای که شی منبع فرستنده و شی گیرنده هدف به کنترل کننده رویداد ارسال می شود.

برای ایجاد کشیدن و رها کردن، کافی است دو رویداد را پیاده سازی کنید: OnDragDrop و OnDragOver با ویژگی DragMode که روی dmAutomatic تنظیم شده است. در غیر این صورت شروع عملیات جابجایی یعنی روش BeginDrag باید توسط برنامه نویس کدگذاری شود.

برای ادغام مواد، برنامه زیر را ایجاد می کنیم. یک جزء پنل را روی فرم قرار دهید. ویژگی DragMode Object Inspector را روی dmAutomatic قرار دهید. شی فرم را انتخاب کنید و از Object Inspector برای ایجاد رویدادهای زیر استفاده کنید:

رویه TForm1.FormDragOver(فرستنده، منبع: TObject؛ X، Y: عدد صحیح؛ حالت: TDragState؛ var Accept: Boolean); اگر Source = Panel1 شروع شود، سپس Accept:= True other Accept:= False; پایان؛ procedure TForm1.FormDragDrop(فرستنده، منبع: TObject; X، Y: عدد صحیح); BeginPanel1.Left:=X; Panel1.Top:=Y; پایان؛

حال با اجرای اپلیکیشن و فشردن دکمه ماوس روی پنل، می توانیم شی پنل را در سراسر فرم جابجا کنیم.

نتیجه گیری: ما با تکنولوژی آشنا شدیم کشیدن و انداختن(کشیدن و رها کردن) و در عمل از آن استفاده کرد.

182

در این مثال یک عنصر div را انتخاب کرده و با فراخوانی آن را قابل جابجایی می کنیم متد dragable().. همانطور که در شکل زیر نشان داده شده است، در سند باز شده، عنصر موقعیت معمول خود را می گیرد، اما پس از آن می توان آن را با اشاره گر ماوس به هر مکانی در پنجره مرورگر منتقل کرد:

ویژگی کشیدن و رها کردن به خودی خود مفید است، اما زمانی مفیدتر است که همراه با تعامل Droppable که در ادامه توضیح داده می شود، استفاده شود.

تعامل قابل کشیدن تنها از طریق استفاده از نشانه گذاری HTML خاص و سبک های CSS پیاده سازی می شود. این بدان معنی است که این عملکرد تقریباً در هر مرورگری کار می کند، اما عناصری که به آن مجهز شده اند قادر به کار با امکانات مشابه درگ و رها کردن نخواهند بود. سیستم های عامل.

عملیات کشیدن و رها کردن تعریف شده توسط مشخصات HTML5 معمولاً با استفاده از مکانیزم های سیستم عامل بومی اجرا می شود. اگر از مکانیزم کشیدن و رها کردن رابط کاربری جی کوئری استفاده می‌کنید، بهتر است معادل‌های HTML5 را غیرفعال کنید تا از درگیری جلوگیری شود. برای این کار، ویژگی dragable عنصر بدنه سند را روی false قرار دهید.

سفارشی کردن تعامل قابل کشیدن

گزینه های سفارشی سازی زیادی برای تعامل Draggable وجود دارد. اکثر خواص مهم، که در بخش های زیر پوشش داده شده است، در جدول زیر نشان داده شده است:

ویژگی های تعامل قابل کشیدن
ویژگی شرح
محور حرکت را به جهات خاصی محدود می کند. مقدار پیش‌فرض false است، به این معنی که هیچ محدودیتی وجود ندارد، اما می‌توانید مقدار "x" (فقط در محور x حرکت کنید) یا "y" (فقط در امتداد محور y حرکت کنید) را مشخص کنید.
مهار مکان عنصر شناور را به ناحیه خاصی از صفحه محدود می کند. انواع مقادیر پشتیبانی شده در جدول زیر با مثال مربوطه توضیح داده شده است. مقدار پیش فرض نادرست است، به این معنی است که هیچ محدودیتی وجود ندارد
تاخیر انداختن مدت زمانی را که یک عنصر قبل از حرکت باید کشیده شود را مشخص می کند. مقدار پیش فرض 0 است که به معنای عدم تاخیر است
فاصله فاصله ای را که کاربر باید قبل از حرکت یک عنصر از موقعیت شروع خود بکشد را مشخص می کند. مقدار پیش فرض 1 پیکسل است
توری اتصال عنصر منتقل شده به سلول های شبکه را مجبور می کند. مقدار پیش فرض false است، که به معنای عدم الزام آور است

محدودیت جهت حرکت

راه های مختلفی وجود دارد که می توانید حرکت یک عنصر را به جهات خاصی محدود کنید. اولین مورد استفاده از گزینه axis است که به شما امکان می دهد جهت حرکت را به محور X یا Y محدود کنید. یک مثال در زیر نشان داده شده است:

...

به صورت عمودی بکشید
به صورت افقی بکشید


اجرای مثال

در این مثال، دو عنصر div را تعریف می کنیم، آنها را با jQuery انتخاب می کنیم و متد ()draggable را فراخوانی می کنیم. به این متد یک شی ارسال می شود که ابتدا هر دو div را محدود می کند تا در جهت x حرکت کنند. سپس با اعمال متد jQuery filter() می توانیم عنصر dragV را بدون جستجوی مجدد با jQuery در سرتاسر سند انتخاب کرده و آن را روی آن قرار دهیم. جهت حرکت مجاز دیگری - در امتداد محور Y. بنابراین، سندی دریافت می کنیم که در آن یک عنصر div را فقط می توان در جهت عمودی و دیگری را فقط در جهت افقی کشید. نتیجه در شکل نشان داده شده است:

محدود کردن منطقه مجاز برای جابجایی یک عنصر

همچنین می توانید ناحیه ای از صفحه را که می توانید یک عنصر را در آن بکشید محدود کنید. برای این کار از گزینه Containment استفاده می شود. فرمت های مقادیر قابل تعیین در این گزینه در جدول زیر توضیح داده شده است:

نمونه ای از استفاده از گزینه Containment در زیر نشان داده شده است:

...

به صورت افقی بکشید
به داخل والد بکشید


اجرای مثال

در این مثال، هر دو عنصر محدود به حرکت هستند به طوری که آنها را فقط می توان در عنصر والد، که یک عنصر div با اندازه ثابت است، کشید. یکی از div های شناور با استفاده از گزینه axis یک محدودیت اضافی دارد که فقط می تواند به صورت افقی در عنصر والد حرکت کند. نتیجه در شکل نشان داده شده است:

محدود کردن توانایی انتقال یک عنصر به سلول های شبکه

گزینه grid به شما امکان می دهد اتصال عنصر منتقل شده را به سلول های شبکه تنظیم کنید. این گزینه آرایه ای از دو عنصر را می پذیرد که عرض و ارتفاع سلول های شبکه را بر حسب پیکسل مشخص می کند. نمونه ای از استفاده از گزینه grid در زیر نشان داده شده است:

...

مرا بکش


اجرای مثال

در این مثال، شبکه روی 100 پیکسل عرض و 50 پیکسل ارتفاع تنظیم شده است. هنگامی که یک عنصر را می کشید، از یک سلول (نامرئی) به سلول دیگر "پرش" می کند. افکت snapping یک مورد استفاده عالی برای عملکرد تعامل است، اما انتقال آن با عکس‌های صفحه سخت است.

شما می توانید با تنظیم محور حرکت آزاد روی 1 یک افکت snapping تنها برای یک جهت ایجاد کنید. برای مثال، اگر گزینه شبکه را روی 1 تنظیم کنید، عنصر هنگام حرکت به صورت افقی به سلول های شبکه گسترده 100 پیکسل می رسد، اما آزادانه به صورت عمودی حرکت می کند. .

تاخیر در سفر

دو گزینه وجود دارد که به شما امکان می دهد کشیدن یک عنصر شناور را به تاخیر بیندازید. با گزینه تاخیر، می توانید زمانی را بر حسب میلی ثانیه تنظیم کنید که کاربر باید نشانگر ماوس را قبل از اینکه عنصر واقعا جابجا شود، بکشد. نوع دیگری از تاخیر توسط گزینه distance ارائه می شود که فاصله را برحسب پیکسل مشخص می کند که کاربر باید نشانگر ماوس را قبل از اینکه عنصری دنبالش کند، بکشد.

نمونه ای از استفاده از هر دو تنظیمات در زیر نشان داده شده است:

...

مسدود کردن با تاخیر زمانی
بلوک با حداقل فاصله


اجرای مثال

در این مثال دو عنصر شناور وجود دارد که یکی از آنها با گزینه تاخیر و دیگری با گزینه فاصله تنظیم شده است.

در مورد تأخیر مشخص شده توسط گزینه تاخیر، کاربر باید قبل از اینکه عنصر را واقعاً جابجا کند، برای مدت زمان مشخصی بکشد. AT این مثالمدت زمان این فاصله 1000 میلی ثانیه است. در این مدت نیازی به حرکت دادن ماوس نیست، اما دکمه ماوس باید در تمام مدت تاخیر فشرده بماند و پس از آن می توان با حرکت ماوس عنصر را جابجا کرد. پس از سپری شدن زمان تأخیر، عنصری که جابجا می‌شود به موقعیت نشانگر ماوس می‌چسبد، با توجه به محدودیت‌های اعمال‌شده توسط گزینه‌های شبکه، منطقه و محور که قبلاً بحث شد.

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

اگر هر دو تنظیمات را روی یک عنصر اعمال کنید، تا زمانی که هر دو معیار تاخیر برآورده نشوند، عنصری که جابجا می‌شود حرکت نمی‌کند. تا زمانی که تلاش برای کشیدن عنصر برای زمان مشخص شده طول بکشد و تا زمانی که نشانگر ماوس تعداد پیکسل های مشخص شده را حرکت دهد.

استفاده از روش‌های تعامل قابل کشیدن

تمام روش های تعریف شده برای تعامل Draggable بخشی از مجموعه روش های اساسی هستند که قبلاً در ویجت ها دیده اید. روش‌های خاص برای تعامل Draggable ارائه نشده‌اند، بنابراین به جزئیات آنها را پوشش نمی‌دهیم. لیست روش های موجود در جدول زیر نشان داده شده است:

استفاده از رویدادهای تعاملی قابل کشیدن

تعامل قابل کشیدن از مجموعه ساده ای از رویدادها پشتیبانی می کند که هنگام کشیدن یک عنصر به شما اطلاع می دهد. این رویدادها در جدول زیر شرح داده شده است:

همانند رویدادهای ویجت، به این رویدادها نیز می توان واکنش نشان داد. نمونه ای از مدیریت رویدادهای شروع و توقف در زیر نشان داده شده است:

...

مرا بکش


اجرای مثال

این مثال از رویدادهای شروع و توقف برای تغییر محتوای متن یک عنصر در طول فرآیند کشیدن استفاده می کند. این مزیت از این واقعیت ناشی می‌شود که تعامل Draggable به طور کامل با استفاده از HTML و CSS پیاده‌سازی می‌شود: می‌توانید از jQuery برای تغییر وضعیت یک عنصر قابل کشیدن حتی زمانی که در سراسر صفحه در حال حرکت است استفاده کنید.

با استفاده از تعامل Droppable

در برخی شرایط، کشیدن یک عنصر به تنهایی می تواند کافی باشد، اما زمانی که همراه با تعامل Droppable استفاده می شود، بسیار مفید است.

عناصری که تعامل Droppable روی آنها اعمال شده است (عناصر پذیرنده) توانایی پذیرش عناصر droppable ایجاد شده با تعامل Draggable را به دست می آورند.

عناصر دریافت کننده با ایجاد می شوند متد dropable().، اما برای به دست آوردن عملکرد مفید، باید از میان مواردی که برای این نوع تعامل تعریف شده اند، کنترل کننده رویداد ایجاد کنید. رویدادهای موجود در جدول زیر نشان داده شده است:

رویدادهای تعاملی قابل رهاسازی
رویداد شرح
ایجاد کردن زمانی رخ می دهد که یک تعامل Droppable روی یک عنصر اعمال شود
فعال کردن زمانی رخ می دهد که کاربر شروع به کشیدن یک عنصر شناور می کند
از کار انداختن زمانی رخ می دهد که کاربر کشیدن یک عنصر شناور را متوقف کند
بر فراز زمانی رخ می دهد که کاربر یک عنصر شناور را روی عنصر دریافت کننده می کشد (اما با فرض اینکه دکمه ماوس هنوز رها نشده است)
بیرون زمانی رخ می دهد که کاربر یک عنصر شناور را به خارج از عنصر دریافت کننده می کشد
رها کردن زمانی اتفاق می‌افتد که کاربر یک عنصر شناور را روی عنصر گیرنده بگذارد

نمونه ای از ایجاد یک عنصر دریافت کننده ساده که دارای یک کنترل کننده رویداد تک قطره است در زیر آورده شده است:

...

اینجا را ترک کن
مرا بکش


اجرای مثال

در این مثال، یک عنصر div به سند اضافه شده است که محتوای متنی آن با رشته "Leave it here" نشان داده می شود. ما این عنصر را با استفاده از jQuery انتخاب می کنیم و متد droppable() را فراخوانی می کنیم و به آن یک شی تنظیمات ارسال می کنیم که یک handler برای رویداد drop تعریف می کند. پاسخ به این رویداد تغییر متن عنصر شناور با استفاده از متد text() است.

تجربه تعاملی کشیدن و رها کردن ایجاد شده در این مثال ساده ترین است، اما زمینه مفیدی برای توضیح احتمالات فراهم می کند. کار مشترکتعاملات قابل کشیدن و رها کردن مراحل مختلف فرآیند کشیدن و رها کردن عناصر در شکل نشان داده شده است:

همه اینها بسیار ساده به نظر می رسد. عنصر در حال جابجایی را می کشیم تا بالای عنصر گیرنده قرار گیرد و رها می کنیم. عنصر رها شده در جایی که رها شده باقی می ماند و محتوای متن آن در پاسخ به وقوع رویداد drop تغییر می کند. بخش‌های زیر به شما نشان می‌دهند که چگونه از سایر رویدادهای تعامل Droppable برای بهبود تجربه کاربر استفاده کنید.

برجسته کردن شیء دریافت کننده هدف

با استفاده از فعال کردن و غیرفعال کردن رویدادها، زمانی که کاربر فرآیند کشیدن یک عنصر را شروع می کند، می توانید شی دریافت کننده هدف را برجسته کنید. در بسیاری از موقعیت‌ها، این ایده بسیار مثمر ثمر است، زیرا به کاربر نشانی قابل اعتماد می‌دهد که کدام عناصر بخشی از مدل کشیدن و رها کردن هستند. مثال مربوطه در زیر نشان داده شده است:

... $(function() ($("#draggable").draggable(); $("#droppable").droppable(( drop: function() ($("#draggable").text("Dropped) ") ), فعال کنید: function() ($("#droppable").css(( حاشیه: "متوسط ​​سبز دوتایی"، backgroundColor: "lightGreen" )); ), غیرفعال کردن: function() ($("#droppable ").css("مرز"، "").css("رنگ پس زمینه"، ""); ) )); )); ... مثال را اجرا کنید

به محض اینکه کاربر شروع به کشیدن عنصر می کند، رویداد فعال - مرتبط با عنصر دریافت کننده ما - فعال می شود و تابع handler از متد ()css برای تغییر ویژگی های CSS حاشیه و رنگ پس زمینه عنصر استفاده می کند. در نتیجه، عنصر دریافت کننده هدف برجسته می شود و به کاربر نشان می دهد که بین آن و عنصر در حال جابجایی ارتباط وجود دارد.

رویداد غیرفعال برای حذف مقادیر ویژگی CSS از عنصر دریافت کننده و برگرداندن آن به آن استفاده می شود حالت اولیهبه محض اینکه کاربر دکمه ماوس را رها کرد. (این رویداد هر زمان که کشیدن یک عنصر متوقف شود فعال می شود، صرف نظر از اینکه عنصر کشیده شده روی عنصر گیرنده باقی بماند یا خیر.) این فرآیند در شکل نشان داده شده است:

کنترل همپوشانی عناصر

فناوری کشیدن و رها کردن را می توان با اضافه کردن مدیریت رویداد به آن بهبود بخشید. رویداد بیش از حد زمانی اتفاق می‌افتد که 50 درصد عنصر در حال جابجایی بالای هر بخشی از عنصر دریافت‌کننده باشد. رویداد خروج زمانی فعال می‌شود که عناصری که قبلاً با هم همپوشانی داشتند دیگر همپوشانی ندارند. نمونه ای از پاسخ به این رویدادها در زیر نشان داده شده است:

$(function() ($("#draggable").draggable(); $("#droppable").droppable(( drop: function() ($("#draggable").text("Dropped"))) , activate: function() ($("#droppable").css(( حاشیه: "Medium double green", backgroundColor: "lightGreen" )); ), غیر فعال کردن: function() ($("#droppable"). css("border"، "").css("background-color", ""); ), over: function() ($("#droppable").css(( border: "Medium double red", backgroundColor : "قرمز")); ), out: function() ($("#droppable").css("border"، "").css("background-color"، ""); ) )); ) ) اجرای مثال

همان توابع کنترل کننده در اینجا مانند مثال قبلی استفاده می شود، اما در این مورد آنها با رویدادهای over و out مرتبط هستند. هنگامی که حداقل 50 درصد عنصر شناور با عنصر دریافت کننده همپوشانی داشته باشد، قاب می شود و رنگ پس زمینه آن تغییر می کند، همانطور که در شکل نشان داده شده است:

این حد 50% آستانه تحمل نامیده می شود که می تواند هنگام ایجاد عنصر دریافت کننده تنظیم شود، همانطور که در ادامه نشان داده خواهد شد.

تنظیم تعامل Droppable

تعامل Droppable دارای تعدادی ویژگی است که می توانید آنها را تغییر دهید تا رفتار آن را سفارشی کنید. این خواص در جدول زیر آمده است:

ویژگی های برهمکنش قابل قطره زدن
ویژگی شرح
معلول اگر این گزینه درست باشد، عملکرد تعامل Droppable در ابتدا غیرفعال است. مقدار پیش فرض نادرست است
تایید کنید مجموعه ای از عناصر شناور را که عنصر دریافت کننده به آنها پاسخ می دهد، محدود می کند. مقدار پیش فرض * است، با هر عنصری مطابقت دارد
activeClass کلاسی را تعریف می کند که در پاسخ به رویداد فعال سازی اختصاص داده می شود و در پاسخ به رویداد غیرفعال سازی حذف می شود.
hoverClass کلاسی را تعریف می کند که در پاسخ به یک رویداد بیش از حد اختصاص داده می شود و در پاسخ به یک رویداد بیرون حذف می شود.
تحمل حداقل درجه همپوشانی که در آن رویداد بیش از حد رخ می دهد را مشخص می کند

محدودیت در عناصر شناور مجاز

با استفاده از گزینه پذیرش می‌توانید مجموعه‌ای از عناصر قابل حذف را محدود کنید که توسط عنصری که عملکرد قابلیت همکاری Droppable را دارد پذیرفته می‌شود. مقدار گزینه پذیرش باید یک انتخابگر باشد. در نتیجه این رویداد، فعل و انفعالات Droppable تنها در صورتی رخ خواهند داد که عنصر در حال جابجایی با انتخابگر مشخص شده مطابقت داشته باشد. مثال مربوطه در زیر نشان داده شده است:

...

اینجا را ترک کن
عنصر 1
عنصر 2


اجرای مثال

در این مثال، دو عنصر شناور با شناسه‌های drag1 و drag2 وجود دارد. هنگام ایجاد یک عنصر پذیرنده، از گزینه accept استفاده می شود که با آن نشان می دهیم که فقط عنصر drag1 یک عنصر شناور قابل قبول خواهد بود.

هنگام کشیدن عنصر drag1، همان جلوه ای را که در مثال های قبلی مشاهده می کنید، خواهید دید. رویدادهای فعال، غیرفعال، بیش از حد و خاموش شدن در زمان های مناسب بر روی عنصر دریافت کننده فعال می شوند. در عین حال، اگر یک عنصر drag2 را بکشید که با انتخابگر مشخص شده در پارامتر پذیرش مطابقت ندارد، این رویدادها فعال نمی شوند. این عنصر می تواند آزادانه جابجا شود، اما توسط عنصر دریافت کننده پذیرفته نمی شود.

به تغییر در نحوه انتخاب یک عنصر شناور قابل قبول برای فراخوانی متد ()text توجه کنید. هنگامی که تنها یک عنصر شناور در سند وجود داشت، ویژگی id برای این کار کافی بود:

Drop: function() ($("#draggable").text("Dropped") ),

در این مثال، دو عنصر شناور وجود دارد و انتخاب با ویژگی id نتیجه مطلوبی را به همراه نخواهد داشت، زیرا متن در این حالت همیشه در همان عنصر شناور تغییر می کند، صرف نظر از اینکه کدام عنصر برای عنصر دریافت کننده قابل قبول است.

راه حل این است که از شی UI که jQuery UI ارائه می کند به عنوان یک آرگومان اضافی برای هر رویداد کنترل کننده استفاده کنید. ویژگی dragable شی UI یک شی jQuery را برمی گرداند که حاوی عنصری است که کاربر می کشد یا سعی می کند روی عنصر هدف رها کند و اجازه می دهد عنصر مورد نظر به صورت زیر انتخاب شود:

رها کردن: تابع (رویداد، رابط کاربری) ( ui.draggable.text ("افتاده"))،

تغییر آستانه همپوشانی

به طور پیش‌فرض، رویداد over تنها زمانی فعال می‌شود که حداقل 50 درصد از عنصر در حال جابجایی با عنصر دریافت‌کننده همپوشانی داشته باشد. مقدار این همپوشانی آستانه را می توان با استفاده از گزینه تلورانس تغییر داد که می تواند مقادیر نشان داده شده در جدول زیر را بگیرد:

دو مقداری که من اغلب استفاده می کنم، مناسب و لمس، آنهایی هستند که بیشترین حس را برای کاربران دارند. زمانی که عنصر کشیده شده باید در ناحیه عنصر گیرنده که در آن جابه جا شده باقی بماند، از مقدار fit استفاده می کنم و زمانی که عنصر کشیده شده باید به موقعیت اصلی خود بازگردد، از مقدار لمسی استفاده می کنم (مثالی بعدا داده خواهد شد). نمونه ای از استفاده از پارامترهای fit و touch در زیر نشان داده شده است:

مقدار کلون به jQuery UI می گوید که یک کپی از عنصر شناور به همراه تمام محتوای آن ایجاد کند و از نتیجه به عنوان عنصر کمکی استفاده کند. نتیجه در شکل نشان داده شده است:

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

همانطور که در شکل نشان داده شده است، عنصر شناور اصلی در جای خود باقی می ماند و تنها عنصر کمکی به دنبال نشانگر ماوس در سراسر صفحه حرکت می کند. اگر اندازه عنصر در حال جابجایی بزرگ باشد، مانند مثال ما، بقیه عناصر سند را پوشش می دهد، بنابراین حتی ردیابی موقعیت عنصر دریافت کننده برای کاربر دشوار خواهد بود. این مشکل را می توان با ارائه تابعی به عنوان مقدار گزینه helper، همانطور که در مثال زیر نشان داده شده است، حل کرد:

... $(function() ($("div.draggable")..png"/>") )); $("#basket").droppable(( activeClass: "active", hoverClass: "hover" )); ))؛ ... مثال را اجرا کنید

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

تصویر کوچک به عنوان یک مکان نگهدار برای عنصر شناور عمل می کند و ردیابی سایر عناصر در سند را بسیار آسان تر می کند.

شی UI که jQuery UI به رویدادهای تعامل Droppable ارسال می کند حاوی یک ویژگی کمکی است و این ویژگی می تواند برای دستکاری عنصر کمکی در حین کشیدن آن استفاده شود. نمونه ای از استفاده از این ویژگی در ارتباط با رویدادهای over و out در زیر نشان داده شده است:

... $(function() ($("div.draggable")..png"/>") )); $("#basket").droppable(( activeClass: "active"، hoverClass: "hover"، over: function(event, UI) (ui.helper.css("border"، "thick solid #27e6ed") ) , out: function(رویداد، رابط کاربری) ( ui.helper.css("border"، "") )); ))؛ ...

در اینجا رویدادهای over و out و ویژگی ui.helper برای نمایش یک حاشیه در اطراف عنصر کمکی زمانی که عنصر میزبان روی عنصر میزبان همپوشانی دارد استفاده می‌شود. نتیجه در شکل نشان داده شده است:

به لبه های عناصر ضربه بزنید

با استفاده از گزینه های ضربه محکم و ناگهانیمی توان به این نتیجه رسید که عنصری که حرکت می کند به لبه های عناصری که از کنار آنها عبور می کند "جذب" شود. این گزینه یک انتخابگر را به عنوان مقدار خود می گیرد. عنصر شناور به لبه‌های هر عنصری که با انتخابگر مشخص شده مطابقت دارد می‌چسبد. نمونه ای از استفاده از گزینه snap در زیر نشان داده شده است:

اجرای مثال رابط کاربری جی کوئری

سبد
به اینجا متصل شوید
مرا بکش


هنگامی که یک عنصر متحرک به یکی از عناصر منطبق نزدیک می شود، به نوعی به سمت آن "کشیده می شود" به گونه ای که لبه های مجاور آنها با هم برخورد می کنند. برای چنین صحافی، می توانید هر عنصری را انتخاب کنید، نه فقط عنصر دریافت کننده را. در این مثال، من یک عنصر div اضافه کرده‌ام و گزینه snap را روی مقداری تنظیم کرده‌ام که در سند انتخاب می‌شود. عنصر داده شدهو همچنین عنصر دریافت کننده.

چند گزینه فرعی وجود دارد که به شما امکان می دهد نحوه رفتار عناصر را با توجه به لنگر زدن به خوبی تنظیم کنید. یکی از آنها است گزینه snapMode. می توان از آن برای تعیین نوع صحافی استفاده کرد. مقادیر زیر مجاز است: درونی(به لبه های داخلی عناصر ضربه بزنید)، بیرونی(به لبه های بیرونی عناصر ضربه بزنید) و هر دو(به همه لبه ها ضربه بزنید؛ پیش فرض).

گزینه snapToleranceبه شما این امکان را می دهد تا تعیین کنید که عنصر شناور قبل از اینکه گیرکردن رخ دهد تا چه اندازه باید به لبه عنصر هدف نزدیک شود. مقدار پیش فرض 20 است که به معنای 20 پیکسل است. مثال از مقدار 50 استفاده می کند که مربوط به یک لنگر در فاصله بیشتر است. انتخاب مقدار مناسب برای این گزینه بسیار مهم است. اگر مقدار گزینه snapTolerance خیلی کم باشد، کاربر ممکن است متوجه اثر snapping نشود، و اگر خیلی زیاد باشد، عنصر در حال جابجایی به طور غیرمنتظره شروع به پرش می کند و به عناصر دورتر می خورد.

تکنیک‌های کشیدن و رها کردن طی سال‌ها تکامل یافته‌اند. جای تعجب نیست که با افزایش تعداد برنامه نویسانی که پلاگین های باز را توسعه می دهند کد منبع(به عنوان مثال برای jQuery) روش های قدیمی دوباره احیا می شوند. کتابخانه جاوا اسکریپت بسیار سازگار است و پیشرفت های زیادی را در این عصر فناوری وب ارائه می دهد.

در این آموزش، ما یک اسکریپت می سازیم که می توانیم از آن برای ایجاد مستطیل های پویا کشیدن و رها کردن در وب سایت خود استفاده کنیم. این فرآیند توسط جی کوئری کنترل می شود. چنین اسکریپت هایی با ارائه قابلیت های آماده در زمان صرفه جویی می کنند! و کتابخانه کشیدن و رها کردن را می توان در پروژه های دیگر استفاده کرد.

ما محتوا را آماده می کنیم

اول از همه، ما یک وب سایت کوچک برای پروژه آماده خواهیم کرد. در پوشه پروژه، باید دو دایرکتوری با نام های قابل توجه ایجاد کنید "js"و "css"و یک فایل خالی index.html . کد بسیار ساده خواهد بود به طوری که ایده روشنی از کار وجود دارد و نکته ای برای توسعه بیشتر وجود دارد.

در زیر کد ما آمده است فایل HTML. در فصل سرما شامل 3 اسکریپت هستیم. اسکریپت اصلی جی کوئری از سرور کد گوگل بارگیری می شود. فایل style.css ما نیز گنجانده شده است که حاوی ویژگی های اصلی برای شکل دهی است ظاهرسند ما

مرا بکش

بله بله. دقیقا من

من هم می توانم کشیده شوم

( zIndex: 200، opacity: 0.9 )

P.S. شما می توانید من را در هر جایی رها کنید!


در یک بخش بدنفقط دو بلوک بخش، که شامل هر دو مستطیل است. کد بسیار ساده و قابل درک است. سرصفحه هایی با کلاس ها در داخل هر مستطیل قرار می گیرند. کنترل کنندهو کنترل کننده 2. این مهم است زیرا هر مستطیل هنگام کشیدن رفتار متفاوتی دارد.


نصب CSS

کد HTML بسیار ساده است. اگر نشانه گذاری اولیه را درک می کنید، پس سبک های cssهمچنین دشوار نخواهد بود این عمدتا حاشیه ها، بالشتک ها و رنگ ها را تعریف می کند.

Body,html ( font-family:Calibri, sans-serif; پس‌زمینه:#eaf3fb؛ اندازه قلم:12px؛ ارتفاع:1000px؛ ارتفاع خط:18px؛ ) p (ارتفاع:30px؛ )

انتخابگرها بدنه، htmlفقط برای صفحه نمایشی استفاده می شود. و تمام مطالب در دو مستطیل قابل کشیدن قرار می گیرند.

Dv1 (عرض: 200 پیکسل؛ رنگ پس‌زمینه:#eff7ff؛ حاشیه: 1 پیکسل ثابت #96c2f1؛ موقعیت: مطلق؛ چپ: 100 پیکسل؛ بالا: 100 پیکسل؛ ) .dv1 h2 (رنگ پس‌زمینه:#b2d3f5؛ بالشتک: 5 پیکسل؛ فونت- خانواده: گرجستان، "تایمز رومن جدید"، Times، سریف؛ اندازه قلم: 1.0em؛ تبدیل متن: بزرگ؛ وزن فونت: پررنگ؛ رنگ: #3a424a؛ حاشیه: 1 پیکسل؛ مکان نما: حرکت؛ ) .dv1 div ( padding: 5px؛ حاشیه-پایین :10px; ) .dv2 ( پس‌زمینه رنگ:#f6ebfb؛ حاشیه: 1px توپر #a36fde؛ عرض: 550 پیکسل؛ موقعیت: مطلق؛ مکان‌نما: حرکت؛ چپ: 400 پیکسل؛ بالا: 230 پیکسل؛ ) .dv2 h2 (رنگ پس‌زمینه: #eacfe9؛ فاصله حروف:-0.09em؛ اندازه قلم: 1.8em؛ وزن قلم: پررنگ؛ بالشتک: 15 پیکسل؛ حاشیه: 1 پیکسل؛ رنگ:#241f24؛ مکان نما: حرکت؛ ) .dv2 .content2 (پرداخت: 5 پیکسل ؛ حاشیه پایین: 10 پیکسل؛ )

برای هر دو کلاس .dv1 و .dv2، از موقعیت یابی مطلق استفاده می کنیم. این ضروری نیست و احتمالاً بیشتر نیست بهترین راهبرای قرار دادن مستطیل های قابل کشیدن. با این حال، برای مثال ما، این موقعیت‌یابی منطقی است، زیرا هر بار که صفحه به‌روزرسانی می‌شود، مستطیل‌ها در مکان‌های خاصی تنظیم می‌شوند.

همچنین فونت ها و رنگ ها برای مستطیل ها متفاوت است تا تفاوت را راحت تر ببینید.

در غیر این صورت، سرفصل ها و محتوای بلوک ها تقریباً یکسان هستند. اگر سبک‌ها را در پروژه خود کپی می‌کنید، نام‌ها را قبل از اجرا تغییر دهید. در برخی موارد استفاده از شناسه ها به جای کلاس ها منطقی تر خواهد بود، مانند زمانی که از تکنیک کشیدن و رها کردن برای یک بلوک خاص استفاده می شود.

تجزیه جاوا اسکریپت

دو فایل جاوا اسکریپتشامل تمام کدهای لازم برای کار است. ما از جزئیات کار با jQuery صرف نظر می کنیم، زیرا این کار در محدوده این آموزش نیست. بیایید به فایل jquery.dragdrop.js توجه کنیم.

خط 22 تعریف تابع است می کشد.

$.fn.Drags = function(opts) ( var ps = $.extend(( zIndex: 20، opacity: 0.7، handler: null، onMove: function() ()، onDrop: function() ())، opts )

این متغیر بازگشتی و داده های اولیه را برای آن تنظیم می کند می کشد. این روش در هنگام کار با jQuery برای انتقال گزینه ها به توابع دیگر بسیار مورد استفاده قرار می گیرد. در داخل ما متغیرهایی را برای همه تنظیم می کنیم گزینه های موجودبرای مستطیل های قابل کشیدن


قطعه کد زیر شامل کنترل کننده رویداد برای متغیر است کشیدن رها کردن. هر دو رویداد بکشیدو رها کردنفراخوانی توابع با ارسال پارامترهای رویداد به آنها. این رویدادها زمانی رخ می‌دهند که دکمه ماوس را برای کشیدن یک شی و سپس رها کردن آن فشار دهید.

Var dragdrop = ( کشیدن: تابع(e) ( var dragData = e.data.dragData؛ dragData.target.css(( سمت چپ: dragData.left + e.pageX - dragData.offLeft، بالا: dragData.top + e.pageY - dragData.offTop )؛ dragData.handler.css (( مکان نما: "حرکت" ))؛ dragData.target.css (( مکان نما: "حرکت" ))؛ dragData.onMove(e); ), drop: function( ه) ( var dragData = e.data.dragData؛ dragData.target.css(dragData.oldCss)؛ //.css(( "تعوض": "" ))؛ dragData.handler.css ("مکان نما"، dragData. oldCss.cursor); dragData.onDrop(e)؛ $().unbind("mousemove"، dragdrop.drag) .unbind("mouseup"، dragdrop.drop); ) )

توابع ما موقعیت CSS هر شی را دستکاری می کنند. اگر موقعیت مطلق اشیاء خود را تغییر دهید، این روی کد تأثیری نخواهد داشت، زیرا هر کدام تابع جاوا اسکریپتهر سبکی که برای شی تعریف شده است را تغییر می دهد.

در بقیه کدها، کنترلر بررسی می شود و سایر سبک ها از نظر زیبایی تغییر می کنند. در اینجا می توانید تغییری در شفافیت، فونت و رنگ اضافه کنید یا پاراگراف های جدید اضافه کنید.

توابع کشیدن/ رها کردن

فایل fn.js دوم حاوی کد بسیار ساده ای است. ما منتظر می مانیم تا سند به طور کامل بارگیری شود و پس از آن توابع خود را فراخوانی می کنیم. دو نمونه تابع تعریف شده است می کشد، که قبلا به آن پرداخته شد.

ما دو بلوک شناور با کلاس های .dv1 و .dv2 داریم. اگر باید یک بلوک شناور را ترک کنید، فقط باید قسمت دوم کد را حذف کنید. اضافه کردن یک بلوک شناور دیگر نیز آسان است. فقط باید اضافه کنید ویژگی جدیددر این فایل

اولین مرحله تنظیم گزینه ها هنگام فراخوانی تابع است. حتماً نام کنترل کننده را تنظیم کنید. با آن، به جی کوئری می‌گوییم که وقتی دکمه ماوس را فشار می‌دهیم از کدام هندلر استفاده کند منطقه خاصسند نام کنترل کننده می تواند یک کلاس یا یک ویژگی ID باشد.

اولین تابع ما دارای دو کنترل کننده رویداد است onMoveو onDrop. هر دو توابع جدیدی را فراخوانی می کنند که به عنوان متغیر به رویداد فعلی ارسال می شوند. اینجاست که کد HTML در مستطیل دستکاری می شود تا در هر حرکت به روز شود. این یک اثر عالی برای نشان دادن نحوه کنترل فرآیند با رویدادهای ساده جی کوئری است.

در تابع دوم از پارامترهای z-Index و opacity استفاده می کنیم. می توانید دیگران را اضافه کنید ویژگی های css? اما این نیاز به تجدید نظر دارد. کد جاوا اسکریپتبرای بررسی تنظیمات به عنوان مثال، می توانید یک سبک یا مقادیر مختلف فونت را برای ارتفاع و عرض مستطیل شناور ارسال کنید - یک ترفند بسیار جالب!

نتیجه

در نتیجه کمی کار، ما یک رابط فوق العاده با عملکرد کشیدن و رها کردن در اختیار داریم. jQuery مزایای فوق العاده ای را برای توسعه دهندگانی که مشتاق به استفاده از روش های قدیمی در پروژه های خود هستند، فراهم می کند.

در نتیجه، ما نه تنها توابع مدیریت رویداد را دریافت کردیم، بلکه می‌توانیم متغیرهای جدیدی را به بلوک‌های قابل کشیدن منتقل کنیم. این امر فرصت های جدیدی را برای خلاقیت باز می کند. نسخه ی نمایشی درس فقط شامل یک طرح کلی از کارهایی است که می توان با کمک چنین کدهایی انجام داد.

بنابراین اسناد jQuery را برای استفاده از توابع کتابخانه بررسی کنید.