Skip to content

图片拖动验证

实现方案

1. 容器尺寸获取

  • 获取图片容器 DOM 元素的宽度(w)和高度(h)
  • 定义缺口宽度(gapWidth)和高度(gapHeight),通常为 40-40px 的固定值

2. 缺口位置生成算法

javascript
// 计算缺口位置 (关键算法)
const gapX = Math.random() * (w / 2 - gapWidth); // 限制在左半区域
const gapY = Math.random() * (h - gapHeight); // 限制在垂直范围内

// 确保最小边距 (10px)
gapX = Math.max(10, gapX);
gapY = Math.max(10, gapY);

3. 缺口视觉效果实现

  • 背景图片遮罩

    • 使用 CSS clip-path属性在背景图片上创建透明缺口
    • 缺口位置由 gapX 和 gapY 决定
  • 拼图块

    • 使用与背景相同的图片
    • 通过backgroundPosition: -${gapX}px -${gapY}px精确定位
    • 尺寸与缺口相同

4. 验证流程

  1. 拖动拼图块时,实时更新拼图块的位置
  2. 释放时,计算拼图块的位置与缺口位置的差值
  3. 检查差值是否在容差范围内(±5px)

代码示例