元素吸附对齐
实现拖拽时的磁吸效果和对齐辅助线
实现原理
在拖拽过程中,检测元素与其他元素的对齐关系。当接近对齐位置时(如 10px 以内), 自动吸附到对齐线。
function checkSnap(element, target) {
const snapThreshold = 10;
const elemRect = element.getBoundingClientRect();
const targetRect = target.getBoundingClientRect();
// 检查左边缘对齐
if (Math.abs(elemRect.left - targetRect.left) < snapThreshold) {
// 吸附到左边缘
return { snap: true, value: targetRect.left };
}
// 检查右边缘对齐
if (Math.abs(elemRect.right - targetRect.right) < snapThreshold) {
return { snap: true, value: targetRect.right - elemRect.width };
}
return { snap: false };
}
示例:网格吸附
拖拽元素会自动吸附到 50px 网格
拖动我
当前位置
X (已吸附):
0px
Y (已吸附):
0px
💡 吸附计算
吸附位置 = Math.round(原始位置 / 网格大小) * 网格大小
这样元素就会自动对齐到最近的网格线
总结
- 定义吸附阈值(如 10px)
- 在拖拽过程中持续检测对齐关系
- 显示辅助线提示对齐位置
- 自动调整元素位置到对齐点
- 提升用户体验和精确度