【问题标题】:Moving image down screen with Javascript使用 Javascript 将图像向下移动屏幕
【发布时间】:2014-05-09 22:03:16
【问题描述】:

我想将我的图像从屏幕左上角移到左下角。我在 body 加载时调用了两个函数:

window.onload = function() {
MoveRight();
MoveDown();
};

然后我检索客户端浏览器窗口的宽度和高度(以确保动画在到达窗口两侧时停止):

document.body.style.height = height;
document.body.style.width = width;

函数“MoveDown()”是这样的:

function MoveDown(){
for(var i = 0; i < ; i++)
    {
       document.getElementById("Amanda").style.top=+i;
    }
}

由于某种原因,当我加载网页时,图片只是位于左上角。我曾希望 for 循环每次都会将“顶部”值增加 1px,直到它停止时触及窗口底部。

如果有帮助,图像位置设置为相对,left 和 top 都设置为 0px。

如果有人能帮忙就太好了。

*我收集宽度是因为我希望图像沿对角线移动,但我想如果我向下移动,我可以轻松更改代码以使其同时向侧面移动。

【问题讨论】:

  • 有什么理由不将其设置为绝对值并将其底部设为 0?
  • 是的,因为我想要动画,因此每次运行时都会循环将像素递增 1。谢谢

标签: javascript html css


【解决方案1】:

它不移动的原因很可能是(取决于浏览器),因为您没有设置单位。试试

document.getElementById("Amanda").style.top=i+"px";

但是,您会发现它是直接向下跳而不是动画。原因是您的循环一次性执行,而没有给浏览器重绘的机会。有很多方法可以解决这个问题,但一种简单的方法是这样的

function MoveDown() {
    var i=0;
    function step() {
       document.getElementById("Amanda").style.top=i+"px";
       i++;
       if (i<=100) setTimeout(step,10);
    }
    step();
}

【讨论】:

  • 非常感谢,这正是我要找的!
【解决方案2】:

您是否有position: absoluteposition: relative(或position: fixed)作为您的图片样式? 问这个是因为top 仅适用于定位元素(默认情况下元素有position: static,即它们没有显式定位)。 见https://developer.mozilla.org/en-US/docs/Web/CSS/tophttps://developer.mozilla.org/en-US/docs/Web/CSS/position

在重读您的问题时,您的这个循环看起来像是一个无限循环。考虑为其添加停止规则,或者按照 cmets 中的建议 - 如果您不需要某种滑动动画,只需将 css 规则放入 bottom: 0

【讨论】:

  • 我将它设置为“相对”,顶部设置为 0px。当它达到“高度”时,for循环会不会停止?我将高度定义为浏览器窗口的高度。谢谢!
【解决方案3】:

您会想要使用setTimeoutsetInterval(我记不得了),并带有一些间隔和一个每次运行时递增顶部值的函数。然后在图像到达目的地时取消超时/间隔!

【讨论】:

  • 谢谢 Gonzofish。我的函数 MoveDown() 的代码类似于:pastebin.com/Tkqew4Qx 但仍然无法正常工作。我使用 SetTimeout 添加了延迟。只是为了确认图像没有移动到任何地方,它停留在左上角
猜你喜欢
  • 1970-01-01
  • 2014-06-04
  • 2012-01-07
  • 1970-01-01
  • 2011-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多