jQuery 是一个快速、小巧且功能丰富的 JavaScript 库,它简化了 HTML 文档遍历、事件处理、动画和 Ajax 交互。在移动端实现拖动效果,通常需要结合触摸事件(如 touchstart
、touchmove
和 touchend
)来实现。
position
不为 static
)祖先元素进行定位。以下是一个简单的 jQuery 实现手机端拖动效果的示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>jQuery 手机端拖动效果</title>
<style>
#draggable {
position: absolute;
width: 100px;
height: 100px;
background-color: red;
}
</style>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body>
<div id="draggable"></div>
<script>
$(document).ready(function() {
var startX, startY, initialMouseX, initialMouseY;
$('#draggable').on('touchstart', function(event) {
event.preventDefault();
initialMouseX = event.originalEvent.touches[0].clientX;
initialMouseY = event.originalEvent.touches[0].clientY;
startX = $(this).offset().left;
startY = $(this).offset().top;
});
$('#draggable').on('touchmove', function(event) {
event.preventDefault();
var currentX = event.originalEvent.touches[0].clientX;
var currentY = event.originalEvent.touches[0].clientY;
var deltaX = currentX - initialMouseX;
var deltaY = currentY - initialMouseY;
$(this).css({
left: startX + deltaX,
top: startY + deltaY
});
});
});
</script>
</body>
</html>
event.preventDefault()
来阻止默认行为。touchmove
事件中添加边界检查逻辑。transform
属性来优化性能,而不是使用 left
和 top
。$('#draggable').on('touchmove', function(event) {
event.preventDefault();
var currentX = event.originalEvent.touches[0].clientX;
var currentY = event.originalEvent.touches[0].clientY;
var deltaX = currentX - initialMouseX;
var deltaY = currentY - initialMouseY;
$(this).css({
transform: 'translate(' + (startX + deltaX) + 'px, ' + (startY + deltaY) + 'px)'
});
});
通过以上方法,可以实现一个简单且高效的 jQuery 手机端拖动效果。
领取专属 10元无门槛券
手把手带您无忧上云