MooTools предоставляет потрясающую функцию, которая помогает добавлять функции перетаскивания мышью к элементам веб-страницы. Мы можем сделать это, создав наш собственный новый объект Drag.Move . Используя этот объект, вы можете определить свои параметры и события. Drag и Drag.Move классы из библиотеки MooTools More.
Давайте обсудим параметры и события объекта Drag.Move.
Drag.Move
Drag.Move — это объект, используемый для добавления функции перетаскивания в элементы HTML. Drag.Move расширяет Drag, поэтому мы можем использовать все параметры и события класса Drag объектом Drag.Move. Взгляните на следующий синтаксис и поймите, как использовать объект Drag.Move.
Синтаксис
var myDrag = new Drag.Move(dragElement, { // Drag.Move Options droppables: dropElement, container: dragContainer, // Drag Options handle: dragHandle, // Drag.Move Events // the Drag.Move events pass the dragged element, // and the dropped into droppable element onDrop: function(el, dr) { //will alert the id of the dropped into droppable element alert(dr.get('id')); }, // Drag Events // Drag events pass the dragged element onComplete: function(el) { alert(el.get('id')); } });
Параметры Drag.Move
Drag.Move предоставляет следующие параметры для поддержки html-элементов с помощью функций перетаскивания.
-
droppable — Это помогает вам установить селектор элементов dropppable (элементов, которые регистрируются в связанных с отбрасыванием событиях).
-
Контейнер — Это помогает вам установить контейнер элемента перетаскивания (держит элемент внутри).
-
привязка — это помогает вам установить, сколько пикселей пользователь должен перетащить курсор, прежде чем перетаскиваемый элемент начнет перетаскивать. По умолчанию установлено значение 6, и вы можете установить для него любое количество переменных, представляющих число.
-
handle — это поможет вам добавить дескриптор вашего перетаскиваемого элемента. Ручка становится единственным элементом, который примет захват.
droppable — Это помогает вам установить селектор элементов dropppable (элементов, которые регистрируются в связанных с отбрасыванием событиях).
Контейнер — Это помогает вам установить контейнер элемента перетаскивания (держит элемент внутри).
привязка — это помогает вам установить, сколько пикселей пользователь должен перетащить курсор, прежде чем перетаскиваемый элемент начнет перетаскивать. По умолчанию установлено значение 6, и вы можете установить для него любое количество переменных, представляющих число.
handle — это поможет вам добавить дескриптор вашего перетаскиваемого элемента. Ручка становится единственным элементом, который примет захват.
Взгляните на следующий синтаксис, чтобы узнать, как и где определить элементы droppable и container, snap и handle.
Синтаксис
//here we define a single element by id var dragElement = $('drag_element'); //here we define an array of elements by class var dropElements = $$('.drag_element'); var dragContainer = $('drag_container'); var dragHandle = $('drag_handle'); //now we set up our Drag.Move object var myDrag = new Drag.Move(dragElement , { // Drag.Move Options // set up our droppables element with the droppables var we defined above droppables: dropElements , // set up our container element with the container element var container: dragContainer // set up pixels the user must drag. Snap: 10 // Adds a handle to your draggable element handle: dragHandle });
Drag.Move событий
События Drag.Move предоставляют различные функции, которые можно использовать на разных уровнях действия. Например, когда вы начинаете перетаскивать объект, каждое событие Drag.Move будет передавать перетаскиваемый элемент или отброшенный элемент в качестве параметров.
Ниже перечислены поддерживаемые события.
OnStart ()
Это вызывает событие в начале перетаскивания. Если вы установите длинную привязку, то это событие не произойдет, пока мышь не окажется на расстоянии. Посмотрите на следующий синтаксис.
Синтаксис
var myDrag = new Drag.Move(dragElement , { // Drag options will pass the dragged element as a parameter onStart: function(el) { // put whatever you want to happen on start in here } });
onDrag ()
Это вызывает событие непрерывно, пока вы перетаскиваете элемент. Посмотрите на следующий синтаксис.
Синтаксис
var myDrag = new Drag.Move(dragElement , { // Drag options will pass the dragged element as a parameter onDrag: function(el) { // put whatever you want to happen on drag in here } });
OnDrop ()
Это вызывает событие, когда вы перетаскиваете перетаскиваемый элемент в сбрасываемый элемент. Посмотрите на следующий синтаксис.
Синтаксис
var myDrag = new Drag.Move(dragElement , { // It will pass the draggable element ('el' in this case) // and the droppable element the draggable is interacting with ('dr' here) onDrop: function(el, dr) { // put whatever you want to happen on drop in here } });
OnLeave ()
Это вызывает событие, когда перетаскиваемый элемент покидает границы сбрасываемого элемента. Посмотрите на следующий синтаксис.
Синтаксис
var myDrag = new Drag.Move(dragElement , { // It will pass the draggable element ('el' in this case) // and the droppable element the draggable is interacting with ('dr' here) onLeave: function(el, dr) { // put whatever you want to happen on Leave from droppable area in here } });
OnEnter ()
Это происходит, когда перетаскиваемый элемент входит в область сбрасываемого элемента. Посмотрите на следующий синтаксис.
Синтаксис
var myDrag = new Drag.Move(dragElement , { // It will pass the draggable element ('el' in this case) // and the droppable element the draggable is interacting with ('dr' here) onEnter: function(el, dr) { // this will fire when a draggable enters a droppable element } });
OnComplete ()
Это вызывает событие. onComplete относится к тому моменту, когда вы бросаете предмет сброса, и он будет подниматься независимо от того, приземлился ли вы в предмет сброса. Посмотрите на следующий синтаксис.
Синтаксис
var myDrag = new Drag.Move(dragElement , { // Drag Options // Drag options will pass the dragged element as a parameter onComplete: function(el) { // put whatever you want to happen on complete } });
Давайте возьмем пример, который исследует все функции, описанные в этой главе. Возможны следующие функции: перетаскивание, перетаскивание, onEnter, onLeave, onDrop, onStart, onDrag и onComplete. В этом примере мы предоставляем одну РУЧКУ, используя которую вы можете перетащить перетаскиваемый объект в любое место контейнера. Для каждого действия есть уведомление слева (обозначено синим цветом). В контейнере есть место для капли. Если объект Draggable входит в область Droppable, то активируются последние три индикатора. Посмотрите на следующий код.
пример
<!DOCTYPE html> <html> <head> <style> /* this is generally a good idea */ body { margin: 0; padding: 0; } /* make sure the draggable element has "position: absolute" and then top and left are set for the start position */ #drag_me { width: 100px; height: 100px; background-color: #333; position: absolute; top: 0; left: 0; } #drop_here { width: 80%; height: 200px; background-color: #eee; margin-left: 100px; margin-top: -200px !important; } /* make sure the drag container is set with position relative */ #drag_cont { background-color: #ccc; height: auto; width: 500px; position:relative; margin-top: 20px; margin-left: 20px; margin-bottom: auto; } #drag_me_handle { width: 100%; height: auto; background-color: #F5B041; } #drag_me_handle span { display: block; padding: 20px; } .indicator { width: 100px; height: auto; background-color: #0066FF; border-bottom: 1px solid #eee; } .indicator span { padding: 10px; display: block; } .draggable { width: 200px; height: 200px; background-color: blue; } </style> <script type = "text/javascript" src = "MooTools-Core-1.6.0.js"></script> <script type = "text/javascript" src = "MooTools-More-1.6.0.js"></script> <script type = "text/javascript"> window.addEvent('domready', function() { var dragElement = $('drag_me'); var dragContainer = $('drag_cont'); var dragHandle = $('drag_me_handle'); var dropElement = $$('.draggable'); var startEl = $('start'); var completeEl = $('complete'); var dragIndicatorEl = $('drag_ind'); var enterDrop = $('enter'); var leaveDrop = $('leave'); var dropDrop = $('drop_in_droppable'); var myDrag = new Drag.Move(dragElement, { // Drag.Move options droppables: dropElement, container: dragContainer, // Drag options handle: dragHandle, // Drag.Move Events onDrop: function(el, dr) { if (!dr) { }else { dropDrop.highlight('#FB911C'); //flashes orange el.highlight('#fff'); //flashes white dr.highlight('#667C4A'); //flashes green }; }, onLeave: function(el, dr) { leaveDrop.highlight('#FB911C'); //flashes orange }, onEnter: function(el, dr) { enterDrop.highlight('#FB911C'); //flashes orange }, // Drag Events onStart: function(el) { startEl.highlight('#FB911C'); //flashes orange }, onDrag: function(el) { dragIndicatorEl.highlight('#FB911C'); //flashes orange }, onComplete: function(el) { completeEl.highlight('#FB911C'); //flashes orange } }); }); </script> </head> <body> <p align = "center">Drag and Drop Application</p> <div id = "drag_cont"> <div id = "start" class = "indicator"><span>Start</span></div> <div id = "drag_ind" class = "indicator"><span>Drag</span></div> <div id = "complete" class = "indicator"><span>Complete</span></div> <div id = "enter" class = "indicator"><span>Enter Droppable Element</span></div> <div id = "leave" class = "indicator"><span>Leave Droppable Element</span></div> <div id = "drop_in_droppable" class = "indicator"> <span>Dropped in Droppable Element</span> </div> <div id = "drag_me"> <div id = "drag_me_handle"><span>HANDLE</span></div> </div> <div id = "drop_here" class = "draggable"> <p align = "center">Droppable Area</p> </div> </div> </body> </html>
Вы получите следующий вывод, в котором вам нужно нажать на Handle и перетащить его. Теперь вы можете найти индикацию уведомлений на левой стороне.
Выход