📜  jQuery UI Draggable 拖动事件(1)

📅  最后修改于: 2023-12-03 15:02:11.892000             🧑  作者: Mango

jQuery UI Draggable 拖动事件

jQuery UI是一个强大的JavaScript库。它提供了各种各样的组件和工具,用于在Web页面中创建交互式用户界面。其中一个非常有用的组件是“Draggable”。

“Draggable”将元素变成可拖动的元素,允许用户使用鼠标或手指在屏幕上移动元素,并在页面上拖动它们。在本文中,我们将了解如何使用jQuery UI Draggable拖动事件。

在HTML中添加jQuery UI库文件

要使用jQuery UI Draggable,我们需要先在HTML中添加jQuery UI库文件,可以在jQuery UI官网上下载库文件,也可以直接通过CDN引用:

<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="//code.jquery.com/jquery-1.12.4.js"></script>
<script src="//code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
使元素可拖动

要启用元素的拖动,我们需要为元素添加“Draggable”类并使用jQuery UI的.draggable()方法:

<div class="draggable">可以拖动的元素</div>

<script>
  $(document).ready(function(){
    $('.draggable').draggable();
  });
</script>

现在,我们可以在页面上单击并拖动元素。

拖动事件

“Draggable”提供了多个事件,以便您可以为您的应用程序添加交互性。下面是一些常用的事件:

start

这个事件在开始拖动时触发,可以用于向拖动元素添加样式或显示提示。

$('.draggable').draggable({
  start: function(event, ui){
    $(this).addClass('active');
  }
});
drag

这个事件在拖动过程中持续触发,可以用于实时更改元素的属性。

$('.draggable').draggable({
  drag: function(event, ui){
    console.log('left: ' + ui.position.left + ', top: ' + ui.position.top);
  }
});
stop

这个事件在停止拖动时触发,可以用于保存元素最终位置或重置元素样式。

$('.draggable').draggable({
  stop: function(event, ui){
    $(this).removeClass('active');
  }
});
限制拖动范围

默认情况下,拖动元素是没有限制的,可以在页面上任意移动。但是,您可以通过设置.draggable()方法中的选项来限制元素的拖动范围。

$('.draggable').draggable({
  containment: 'parent'
});

可以将值设置为一个选择器或元素,例如'parent'。 您还可以指定多个元素来限制拖动范围:

$('.draggable').draggable({
  containment: ['#container', '#header']
});
拖动时跟随鼠标

默认情况下,移动元素的区域是拖动时的拖动手柄的位置。如果您想要元素直接跟随鼠标移动,可以使用cursorAt选项。

$('.draggable').draggable({
  cursorAt: {
    left: 25,
    top: 25
  }
});
组合事件

您还可以将多个事件组合在一起。以下是一个示例,在拖动开始时显示提示,在拖动期间更改元素样式,在拖动停止时保存元素位置。

$('.draggable').draggable({
  start: function(event, ui){
    $(this).addClass('active');
  },
  drag: function(event, ui){
    $(this).css({
      'opacity': 0.5,
      'transform': 'rotate(' + ui.position.top + 'deg)'
    });
  },
  stop: function(event, ui){
    $(this).removeClass('active');
    $(this).css({
      'opacity': 1,
      'transform': 'rotate(0)'
    });
    console.log('left: ' + ui.position.left + ', top: ' + ui.position.top);
  }
});

在本文中,我们学习了如何使用jQuery UI Draggable开始拖动、拖动和停止拖动事件。 我们还了解了如何限制组件的拖动范围,使元素直接跟随鼠标移动,并将多个事件组合在一起。希望这个介绍有助于您在应用程序中使用jQuery UI Draggable,提高用户体验。