jQuery 是一个快速、小巧且功能丰富的 JavaScript 库,它简化了 HTML 文档遍历、事件处理、动画和 Ajax 交互。左右拖动通常指的是在一个容器内通过鼠标拖动来移动元素。
以下是一个使用 jQuery UI 实现左右拖动的简单示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>jQuery 左右拖动示例</title>
<link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"></script>
<style>
#draggable {
width: 100px;
height: 100px;
background-color: #ccc;
position: absolute;
}
</style>
</head>
<body>
<div id="draggable">拖动我</div>
<script>
$(function() {
$("#draggable").draggable({
containment: "parent",
scroll: false
});
});
</script>
</body>
</html>
原因:
解决方法:
transform
属性来优化渲染性能。requestAnimationFrame
来优化动画效果。$(function() {
let isDragging = false;
let startX, startY, initialMouseX, initialMouseY;
$("#draggable").on("mousedown", function(event) {
isDragging = true;
startX = $(this).offset().left;
startY = $(this).offset().top;
initialMouseX = event.clientX;
initialMouseY = event.clientY;
});
$(document).on("mousemove", function(event) {
if (isDragging) {
let dx = event.clientX - initialMouseX;
let dy = event.clientY - initialMouseY;
$("#draggable").css({
left: startX + dx + "px",
top: startY + dy + "px"
});
}
});
$(document).on("mouseup", function() {
isDragging = false;
});
});
通过以上方法,可以有效解决拖动时的闪烁和卡顿问题。