Javascript 在浏览器窗口周围移动图像,并在引人注目的侧壁上反弹
我正在学习javascript。我正在开发一个简单的javascript(纯javascript,没有jquery等)程序,用于跨浏览器移动图像。据我所知,我可以在Javascript 在浏览器窗口周围移动图像,并在引人注目的侧壁上反弹,javascript,html,Javascript,Html,我正在学习javascript。我正在开发一个简单的javascript(纯javascript,没有jquery等)程序,用于跨浏览器移动图像。据我所知,我可以在img.style.left或img.style.right中通过加法或减法将图像向左或向右移动-但我需要知道,当图像点击浏览器侧栏时,如何将其反弹 所以图像先向左移动,当它碰到浏览器侧壁时,它会反弹回右侧,碰到右侧壁时,它又开始向左移动 请帮我做这个。提前感谢为此,您主要希望跟踪速度和方向 有两种方法可以实现这一点: 使用reque
img.style.left
或img.style.right
中通过加法或减法将图像向左或向右移动-但我需要知道,当图像点击浏览器侧栏时,如何将其反弹
所以图像先向左移动,当它碰到浏览器侧壁时,它会反弹回右侧,碰到右侧壁时,它又开始向左移动
请帮我做这个。提前感谢为此,您主要希望跟踪速度和方向 有两种方法可以实现这一点:
requestAnimationFrame
移动图像,并检查图像是否命中浏览器的站点CSS3动画
(从JavaScript进行操作)。设置目标x(浏览器的边缘),动画完成后,在另一侧执行反向动画requestAnimationFrame
移动图像,并检查图像是否命中浏览器的站点CSS3动画
(从JavaScript进行操作)。设置目标x(浏览器的边缘),动画完成后,在另一侧执行反向动画requestAnimationFrame
移动图像,并检查图像是否命中浏览器的站点CSS3动画
(从JavaScript进行操作)。设置目标x(浏览器的边缘),动画完成后,在另一侧执行反向动画requestAnimationFrame
移动图像,并检查图像是否命中浏览器的站点CSS3动画
(从JavaScript进行操作)。设置目标x(浏览器的边缘),动画完成后,在另一侧执行反向动画#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;//我们移动每个“滴答”的距离
//身份证会让我们