当前位置:首页 > JavaScript

js实现方块拖曳

2026-03-15 16:00:53JavaScript

实现方块拖曳的步骤

HTML 结构 创建一个简单的方块元素,并为其添加 draggable 属性:

js实现方块拖曳

<div id="draggable-box" draggable="true">拖曳我</div>

CSS 样式 为方块添加基本样式,使其可见且可交互:

js实现方块拖曳

#draggable-box {
  width: 100px;
  height: 100px;
  background-color: #3498db;
  color: white;
  text-align: center;
  line-height: 100px;
  cursor: move;
}

JavaScript 逻辑 通过事件监听实现拖曳功能:

const box = document.getElementById('draggable-box');

box.addEventListener('dragstart', (e) => {
  e.dataTransfer.setData('text/plain', box.id);
  box.style.opacity = '0.5';
});

box.addEventListener('dragend', () => {
  box.style.opacity = '1';
});

document.addEventListener('dragover', (e) => {
  e.preventDefault(); // 允许放置
});

document.addEventListener('drop', (e) => {
  e.preventDefault();
  const draggedId = e.dataTransfer.getData('text/plain');
  const draggedElement = document.getElementById(draggedId);

  // 更新方块位置
  draggedElement.style.position = 'absolute';
  draggedElement.style.left = `${e.clientX - draggedElement.offsetWidth / 2}px`;
  draggedElement.style.top = `${e.clientY - draggedElement.offsetHeight / 2}px`;
});

注意事项

  • dragover 事件必须调用 preventDefault() 才能触发 drop 事件。
  • 拖曳过程中可以调整元素的透明度或样式以提升用户体验。
  • 若需限制拖曳范围,可在 drop 事件中检查坐标并调整位置。

兼容性优化

对于旧版本浏览器,可添加 touch 事件支持:

box.addEventListener('touchstart', handleTouchStart);
box.addEventListener('touchmove', handleTouchMove);

let initialX, initialY;

function handleTouchStart(e) {
  initialX = e.touches[0].clientX - box.offsetLeft;
  initialY = e.touches[0].clientY - box.offsetTop;
}

function handleTouchMove(e) {
  e.preventDefault();
  box.style.position = 'absolute';
  box.style.left = `${e.touches[0].clientX - initialX}px`;
  box.style.top = `${e.touches[0].clientY - initialY}px`;
}

标签: 方块js
分享给朋友:

相关文章

js实现类

js实现类

JavaScript 实现类的几种方式 JavaScript 是一种基于原型的语言,但在 ES6 之后引入了 class 语法糖,使得实现类更加直观。以下是几种常见的实现方式: 使用构造函数 传统的…

js实现复制到剪贴板

js实现复制到剪贴板

使用document.execCommand方法(传统方式,已废弃但部分浏览器仍支持) 该方法适用于旧版浏览器,但已被标记为废弃。执行前需确保文本已被选中: function copyToClipb…

js实现驼峰

js实现驼峰

实现驼峰命名的几种方法 使用正则表达式和字符串替换 通过正则表达式匹配字符串中的特定模式(如下划线或短横线),并将其后的字母转换为大写,同时移除分隔符。 function toCamelCase(s…

js实现游标

js实现游标

使用JavaScript实现游标 在JavaScript中,可以通过操作DOM元素的cursor样式属性来实现自定义游标效果。以下是几种常见的实现方法: 修改默认鼠标指针样式 通过CSS的curso…

js实现投球

js实现投球

实现投球动画的基本思路 使用JavaScript和CSS动画结合的方式模拟投球效果。核心是通过改变元素的位置、旋转和缩放属性,配合定时器或CSS过渡实现平滑动画。 创建基础HTML结构 <di…

js进度条实现

js进度条实现

使用HTML和CSS创建基础结构 在HTML中创建一个容器元素用于显示进度条,通常使用<div>元素。CSS用于设置进度条的样式,包括宽度、高度、颜色和圆角等属性。 <div cl…