Javascript 在浏览器窗口周围移动图像,并在引人注目的侧壁上反弹

Javascript 在浏览器窗口周围移动图像,并在引人注目的侧壁上反弹,javascript,html,Javascript,Html,我正在学习javascript。我正在开发一个简单的javascript(纯javascript,没有jquery等)程序,用于跨浏览器移动图像。据我所知,我可以在img.style.left或img.style.right中通过加法或减法将图像向左或向右移动-但我需要知道,当图像点击浏览器侧栏时,如何将其反弹 所以图像先向左移动,当它碰到浏览器侧壁时,它会反弹回右侧,碰到右侧壁时,它又开始向左移动 请帮我做这个。提前感谢为此,您主要希望跟踪速度和方向 有两种方法可以实现这一点: 使用reque

我正在学习javascript。我正在开发一个简单的javascript(纯javascript,没有jquery等)程序,用于跨浏览器移动图像。据我所知,我可以在
img.style.left
img.style.right
中通过加法或减法将图像向左或向右移动-但我需要知道,当图像点击浏览器侧栏时,如何将其反弹

所以图像先向左移动,当它碰到浏览器侧壁时,它会反弹回右侧,碰到右侧壁时,它又开始向左移动


请帮我做这个。提前感谢

为此,您主要希望跟踪速度和方向

有两种方法可以实现这一点:

  • 使用
    requestAnimationFrame
    移动图像,并检查图像是否命中浏览器的站点
  • 使用
    CSS3动画
    (从JavaScript进行操作)。设置目标x(浏览器的边缘),动画完成后,在另一侧执行反向动画
  • 查看以下资源:


    主要是为了这个目的,你需要跟踪速度和方向

    有两种方法可以实现这一点:

  • 使用
    requestAnimationFrame
    移动图像,并检查图像是否命中浏览器的站点
  • 使用
    CSS3动画
    (从JavaScript进行操作)。设置目标x(浏览器的边缘),动画完成后,在另一侧执行反向动画
  • 查看以下资源:


    主要是为了这个目的,你需要跟踪速度和方向

    有两种方法可以实现这一点:

  • 使用
    requestAnimationFrame
    移动图像,并检查图像是否命中浏览器的站点
  • 使用
    CSS3动画
    (从JavaScript进行操作)。设置目标x(浏览器的边缘),动画完成后,在另一侧执行反向动画
  • 查看以下资源:


    主要是为了这个目的,你需要跟踪速度和方向

    有两种方法可以实现这一点:

  • 使用
    requestAnimationFrame
    移动图像,并检查图像是否命中浏览器的站点
  • 使用
    CSS3动画
    (从JavaScript进行操作)。设置目标x(浏览器的边缘),动画完成后,在另一侧执行反向动画
  • 查看以下资源:


    您可以使用CSS3动画:

    #wrapper {
        position: relative;
        margin-right: 50px;
    }
    #ball {
        height: 50px;
        width: 50px;
        background: blue;
        border-radius: 50px;
        position: absolute;
        animation: animate 4s linear 0s infinite alternate;
    }
    @keyframes animate {
        from { left: 100%; }
        to { left: 0; }
    }
    

    您可以使用CSS3动画:

    #wrapper {
        position: relative;
        margin-right: 50px;
    }
    #ball {
        height: 50px;
        width: 50px;
        background: blue;
        border-radius: 50px;
        position: absolute;
        animation: animate 4s linear 0s infinite alternate;
    }
    @keyframes animate {
        from { left: 100%; }
        to { left: 0; }
    }
    

    您可以使用CSS3动画:

    #wrapper {
        position: relative;
        margin-right: 50px;
    }
    #ball {
        height: 50px;
        width: 50px;
        background: blue;
        border-radius: 50px;
        position: absolute;
        animation: animate 4s linear 0s infinite alternate;
    }
    @keyframes animate {
        from { left: 100%; }
        to { left: 0; }
    }
    

    您可以使用CSS3动画:

    #wrapper {
        position: relative;
        margin-right: 50px;
    }
    #ball {
        height: 50px;
        width: 50px;
        background: blue;
        border-radius: 50px;
        position: absolute;
        animation: animate 4s linear 0s infinite alternate;
    }
    @keyframes animate {
        from { left: 100%; }
        to { left: 0; }
    }
    

    这里有一个纯JavaScript的答案,非常简单

    基本上,您需要一个间隔(或者一个反复重新启动自身的超时)。然后,获取样式的左值(或
    offsetLeft
    )。然后将方向*每个“勾号”的距离添加到位置,检查碰撞,并根据需要反转方向

    下面的代码示例得到了很好的注释

    关键是:不要设置为左或右。选择一个,并且只控制它。试图同时控制两者会让你发疯。大多数情况下,您都希望控制“left”,因为在许多语言中,它相当于“x”(这通常是您为水平位置控制的)

    JSFiddle:

    var parent=document.getElementById('container');//固定移动器的元素
    var mover=document.getElementById('mover');//搬运工可以是任何东西
    var dir=1;//我们前进的方向。。。1是右,-1是左。
    var dist=10;//我们移动每个“滴答”的距离
    //如果我们愿意,ID会让我们稍后停止。
    var intervalId=setInterval(函数(){
    //在左边,去掉末尾的“px”并将其转换为整数。
    var posX=parseInt(mover.style.left.replace(/px$/,“”))|0;
    //添加目录*dist
    posX+=dir*dist;
    //如果我们走对了,我们已经越过了正确的边缘。。。
    if(dir==1&&posX+mover.offsetWidth>parent.offsetWidth){
    //只能向右移动到边缘。。。
    posX-=posX+mover.offsetWidth-parent.offsetWidth;
    //改变方向。
    dir*=-1
    //如果我们向左移动,我们已经越过了左边的边缘。。。
    }else if(dir==-1&&posX<0){
    //停在零。。。
    posX=0;
    //改变方向。。。
    dir*=-1;
    }
    //设置新位置
    mover.style.left=posX+“px”;
    }, 100); // 此数字是每次移动之间的毫秒数。
    //间隔时间越短,移动越平稳,但性能越慢。
    
    这里有一个纯JavaScript的答案,非常简单

    基本上,您需要一个间隔(或者一个反复重新启动自身的超时)。然后,获取样式的左值(或
    offsetLeft
    )。然后将方向*每个“勾号”的距离添加到位置,检查碰撞,并根据需要反转方向

    下面的代码示例得到了很好的注释

    关键是:不要设置为左或右。选择一个,并且只控制它。试图同时控制两者会让你发疯。大多数情况下,您都希望控制“left”,因为在许多语言中,它相当于“x”(这通常是您为水平位置控制的)

    JSFiddle:

    var parent=document.getElementById('container');//固定移动器的元素
    var mover=document.getElementById('mover');//搬运工可以是任何东西
    var dir=1;//我们前进的方向。。。1是右,-1是左。
    var dist=10;//我们移动每个“滴答”的距离
    //身份证会让我们