jquery animate() - 如何移动/动画只是页面的一部分?

时间:2015-11-02 18:52:24

标签: javascript jquery html css

我试图找到一种方法让网页上的图像从顶部和底部向下浮动。我已经开始使用从顶部漂浮的那个。

(代码也可在http://jsfiddle.net/trjthtpf/获得)

代码

这是我到目前为止的原型/测试代码:

<!DOCTYPE html>
<html>
        <head>
                <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
                <meta content="utf-8" http-equiv="encoding">
                <title>Title of the document</title>
                <script src="jquery.js"></script>
<script>

$(document).ready(function() {
       var image = document.getElementById("myimage");
       image.style.display = "block";

        $("#myimage").animate({ 
            marginTop: "400px", 
        }, 10000, "linear"); 
    }); 
/*
$(document).ready(function() {
        $("#myimage_wrapper").animate({ 
            top: "+=400", 
        }, 10000, "linear"); 
    }); 
*/
</script>

        </head>
        <body>
                <h1>This is a float test</h1>
                <div id="myimage_wrapper">
                        <img id="myimage" src="myimage.jpg" marginTop="0" height="199px" width="253" style="display: none"/>
                </div>
                <h1>this should not move but it does</h1>
        </body>
</html> 

什么有用/什么无效

因此,上面的代码会将“myimage”图像从页面上的起始位置向下移动几页,这很棒。 但我有两个问题:

  1. 我希望图像看起来好像是从页面外进来的。有点像苹果在这里:http://www.apple.com/iphone-6s/

  2. 另一个问题是我希望图像移动而不移动页面上的其他元素。

  3. 我到目前为止

    我一直在玩DIV标签,看看是否有办法防止图片标签下的元素移动。但到目前为止,没有成功。

    我也一直在审核这个例子:jQuery animate one Div to move down when another one animates up 但是还没有能够从这里应用课程......

    感谢。

5 个答案:

答案 0 :(得分:1)

这是一个加载的问题。

首先,我会接近你想要的动画,完全不同。不幸的是,我不确定你正在尝试的效果,但我相信这是like this very basic example

您正在制作动画的元素位于文档流程中,并会调整相邻元素,因为它占用的空间更多(margin-top正在使元素x大得多)。您可以使用position property从文档流中删除元素。有时最好制作一个元素position: absolute,有时你不需要依赖其他变量(显式heights或元素大小?)。

此外,我不会亲自动画margin-top,但使用我在我的示例中显示的transform: translate3d(0, -150px, 0);这样的属性,我个人会通过css亲自执行此操作,只需触发帮助{{1}用jQuery。

这是your fiddle without影响任何元素定位的图像,但这又是一个原始示例,为了提供一个好的方法,最好知道这里的真实目标。

答案 1 :(得分:1)

为了防止移动对象影响页面的其余部分,必须将其从文档流中取出。这是通过css样式&#34; position:absolute;&#34;。

完成的

如果将此样式添加到css中,则代码可以正常工作;

class

看到这个小提琴:http://jsfiddle.net/1wjkrk2d/

答案 2 :(得分:0)

这有助于您入门吗?我在div中替换的图像从侧面进入而不会破坏文本的其余部分。堆栈溢出似乎需要超时,但不应该是必需的

$(document).ready(function() {

  setTimeout(function() {
             $("#diamond").removeClass("offscreen");
    }, 100);
});
#diamond.offscreen {
  transform: translateX(-100%);
    transition: all 2s;
}

#diamond {
  background-color:steelblue;
  height: 199px;
  width: 253px;
  transform: translateX(0);
  transition: all 2s;
  -webkit-transition: all 2s;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<h1>This is a float test</h1>
<div id="diamond_wrapper">
  <div id="diamond" height="199px" width="253" class="offscreen" />
</div>
<h1>this should not move but it does</h1>

答案 3 :(得分:0)

为什么不将diamond_wrapper设置为position:absolute。这样,元素就会超出正常的页面流。

.diamond_wrapper {
    position: absolute;
}

答案 4 :(得分:0)

不需要任何JS。 这就是你所需要的:

@keyframes odd {
0% {transform: translate(0px,-400px); }
50% {transform: translate(0px,400px); }
100% {transform: translate(0px,-0px); }

}

检查一下,如果你想对此进行一些修改,请告诉我。

http://codepen.io/damianocel/pen/JYBEdB