jQuery - Урок 10. Плагин draggable - перетаскиваем элементы
Сегодня мы начнем знакомиться с набором официальных плагинов jQuery - jQuery UI. Для работы с набором этих плагинов
нам понадобится файл ui.core.js. На официальном сайте по адресу http://jqueryui.com
можно скачать полный файл (если отметить все галочки, т.е. выбрать все плагины), не забудьте выбрать версию
используемой вами библиотеки. А можно выбрать лишь необходимый плагин (оставив галочку только напротив него, тогда файл будет
весить меньше).
Для дальнейшей работы давайте сходим по вышеуказанному адресу, выберем версию jquery - 1.3.2, отметим все галочки и нажмем на
кнопку Download. В реальной жизни лучше оставить галочку только напротив интересующего вас плагина, но мы будем рассматривать все,
поэтому нам и удобнее скачать полный файл.
Разархивируйте то, что скачали в папку, в которой у вас находятся страницы index.html, style.css и script.js.
Из вновь появившихся папок нас интересует та, в которой лежат файлы jquery-1.3.2.min.js и jquery-ui-1.7.2.custom.min.js.
(Если вы выбрали другую версию jquery, то и версия jquery ui у вас будет отличаться). В моем случае это папка js.
Подключим эти файлы к нашей html-странице:
jQuery плагин draggable
Остальные файлы и папки мы будем подключать в дальнейшем по мере необходимости.
Плагин Draggable
Этот плагин позволяет перетаскивать элементы страницы с помощью мыши. Например, вот так:
Перетащи меня
Код html-страницы:
jQuery плагин draggable
Перетащи меня
Стиль div-у придайте сами, а вот на странице script.js необходимо указать, что этот div будет перемещаемым:
$(document).ready(init);
function init(){
$("#les10_ex1").draggable();
}
Вот так все просто. Перемещение элемента можно настраивать, для это существует ряд параметров. Например:
axis - ограничивает перетаскивание элемента либо по горизонтали (x) либо по вертикали (y)
оси координат.
Пример:
$(document).ready(init);
function init(){
$("#les10_ex2").draggable({
axis:'x'
});
}
Перетащи меня
Теперь div можно перетаскивать только по горизонтали.
containment - ограничивает область перетаскивания. Возможные значения: parent (родительский элемент),
document (текущий документ), window (окно), [x1, y1, x2, y2] - координаты левого верхнего и правого нижнего угла допустимой области.
Пример:
$(document).ready(init);
function init(){
$("#les10_ex3").draggable({
containment:'parent'
});
}
Перетащи меня
Теперь div можно перетаскивать только в пределах родительского элемента (в пределах рамки).
cursor - определяет вид курсора при перетаскивании.
Пример:
$(document).ready(init);
function init(){
$("#les10_ex4").draggable({
cursor: 'crosshair'
});
}
Перетащи меня
Теперь при перетаскивании курсор принимает вид перекрестья в виде прицела. Другие возможные значения:
- e-resize - двунаправленная горизонтальная стрелка,
- n-resize - двунаправленная вертикальная стрелка,
- ne-resize - двунаправленная диагональная стрелка (из левого нижнего угла в верхний правый угол),
- nw-resize - двунаправленная диагональная стрелка (из правого нижнего угла в верхний левый угол),
- move - перекрестье из четырёх стрелок,
- text - обычный текстовый курсор,
- wait - песочные часы Windows.
delay - определяет время в миллисекундах, по истечении которого, начнется перетаскивание (полезно для
предотвращения случайного перетаскивания).
Пример:
$(document).ready(init);
function init(){
$("#les10_ex5").draggable({
delay: 2000
});
}
Перетащи меня
Теперь перетаскивание будет начинаться через 2 секунды после нажатия и удержания левой кнопки мыши.
distance - определяет расстояние в пикселах, которое указатель мыши должен пройти после того, как вы
нажали на кнопку мыши, прежде чем начнется перетаскивание (так же, как и предыдущий параметр полезен для предотвращения
случайного перетаскивания).
Пример:
$(document).ready(init);
function init(){
$("#les10_ex6").draggable({
distance: 50
});
}
Перетащи меня
Теперь перетаскивание будет начинаться только после того, как указатель мыши пройдет 50 пикселов, причем неважно в какую сторону.
handle - определяет, за какой элемент внутри данного осуществляется перетаскивание.
Пример:
$(document).ready(init);
function init(){
$("#les10_ex7").draggable({
handle: 'p'
});
}
Перетащи меня
Теперь перетаскивать div можно только, ухватив за абзац (за текст).
revert - определяет, будет ли элемент возвращен на свое место после перетаскивания (true - да).
Пример:
$(document).ready(init);
function init(){
$("#les10_ex8").draggable({
revert: true
});
}
Перетащи меня
Теперь после перетаскивания div будет возвращаться на свое место.
revertDuration - определяет, за какое время элемент будет возвращен на свое место после перетаскивания (если
предыдущий параметр определен, как true).
Пример:
$(document).ready(init);
function init(){
$("#les10_ex9").draggable({
revert: true,
revertDuration: 3000
});
}
Перетащи меня
Теперь после перетаскивания div будет возвращаться на свое место за 3 секунды.
zIndex - определяет значение свойства z-index (номер слоя) перемещаемого элемента.
Теперь в какой бы последовательности мы не перетаскивали наши div-ы, они всегда будут располагаться соответственно своим слоям
(самый верхний 3, под ним 2, в самом низу 1).
А сейчас мы рассмотрим три параметра, связанных с событиями:
start - событие наступает с началом перемещения.
drag - событие происходит в течение всего времени перемещения.
stop - событие наступает при завершении перемещения.
При использовании любого из этих параметров мы должны определить функцию, которая принимает два аргумента – event (объект события)
и ui (специальный объект, содержащий информацию о положении перемещаемого объекта).
Используя свойства этих аргументов, можно узнать координаты объекта в любой момент при перемещении и после него. Например:
Html-код примера:
jQuery плагин draggable
Функция:
$(document).ready(init);
function init(){
start: function(event, ui) {
var a=event.type;
$('#res').text('Событие: '+a);
},
stop: function(event, ui) {
var a=event.type;
var c=ui.position.left;
var d=ui.position.top;
var e=ui.offset.left;
var f=ui.offset.top;
$('#res').text('Событие: '+a+
'\nРасстояние слева и сверху относительно родительского элемента: '+c+' '+d+
'\nАбсолютные значения расстояния слева и сверху: '+e+' '+f);
}
}
Всего у плагина draggable более 20 различных параметров, полный перечень можете посмотреть, например,
здесь.
У плагина draggable есть четыре метода, которые позволяют менять работу плагина после его инициализации:
destroy - удаляет всю функциональность плагина Draggable.
Пример:
$("#les").draggable(‘destroy’);
disable - временно запрещает работу всей функциональности плагина Draggable.
Пример:
$("#les").draggable(‘disable’);
enable - разрешает работу всей функциональности плагина Draggable (если она была запрещена).
Пример:
$("#les").draggable(‘enable’);
option - позволяет установить значения параметров плагина после его инициализации.
На этом все, мы достаточно уделили время плагину Draggable. В следующий раз мы познакомимся с плагином Droppable, который
позволяет перемещаемые элементы сбрасывать в какой-либо другой элемент (самый распространенный пример - корзина).