You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

点击时用JavaScript实现Div向鼠标坐标移动并缩小的动画

实现球点击球门后的移动+缩小动画

核心问题修复

原代码中move函数存在语法错误,且未结合缩放变换,以下是完整的修复方案:

1. 修改JavaScript代码

function goal(e){   
    var score = getScore();
    increaseDifficulty(score)
    document.getElementById("score").innerHTML = score + 1 ;
    var b = getShotCordinates(e);
    move(b[0],b[1]);
}

function save(){
    resetScore();
}

function resetScore(){
    document.getElementById("score").innerHTML = 0;
}

function getScore(){
    return parseInt(document.getElementById("score").innerHTML);
}

function move(x,y){
    const ball = document.getElementById("ball");
    // 移除旧的过渡结束监听,避免重复触发
    ball.removeEventListener('transitionend', resetBall);
    // 同时设置移动坐标和缩小比例
    ball.style.transform = `translate(${x}px, ${y}px) scale(0.2)`;
    // 开启平滑过渡动画
    ball.style.transition = "transform 0.5s ease-out";
    // 动画结束后重置球的初始状态
    ball.addEventListener('transitionend', resetBall);
}

// 重置球的位置和大小
function resetBall(){
    const ball = document.getElementById("ball");
    ball.style.transform = "translate(0, 0) scale(1)";
}

function getShotCordinates(e){
    var Cordinates = [e.clientX, e.clientY];
    console.log(Cordinates[0] + " - " + Cordinates[1])
    return Cordinates;
}

2. 更新HTML的点击事件

将球门的onclick事件修改为传递event对象,替代旧的window.event写法:

<div id="goals" class="goals" onclick="goal(event)">

3. 补充CSS样式建议

确保球元素支持变换动画,添加基础样式:

.ball {
    position: absolute; /* 根据你的布局调整定位方式 */
    width: 50px;
    height: 50px;
    border-radius: 50%;
    background-color: #fff;
    transform-origin: center; /* 让缩放以球的中心为原点 */
}

关键修改说明

  • 把原move函数中错误的translate(x,y)调用改为模板字符串写法,同时添加scale(0.2)实现缩小效果,多个变换属性用空格分隔
  • 给球元素设置transition属性,让transform的变化平滑过渡
  • 使用函数参数接收event对象,替代非标准的window.event
  • 添加transitionend事件监听,动画结束后自动重置球的位置和大小,方便下次操作

内容的提问来源于stack exchange,提问作者GrahamNorton

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 15:10:23