【问题标题】:Animating a DIV automatically自动为 DIV 设置动画
【发布时间】:2012-02-11 05:25:36
【问题描述】:

http://jsfiddle.net/AndyMP/fVKDy/

这个小提琴说明了我试图解决的一个问题。容器 DIV 可容纳两个动画跨过的 DIV。第二个 DIV 的高度比第一个小,因为内容较少。我想要做的是让底部 DIV 根据第二个 DIV 中内容的高度在可见时自动向上滑动。但它会向上滑动并越过第二个 DIV。

关于如何解决这个问题的任何想法?

$(function() {
    $(".left_slide").click(function() {
        $(".block1").stop(true, true).animate({ left: -400 }, 500).hide(1000);
        $(".block2").stop(true, true).animate({ left: 0 }, 500);
    });
});
$(function() {    
    $(".right_slide").click(function() {
        $(".block2").stop(true, true).animate({ left: 400 }, 500);
        $(".block1").stop(true, true).animate({ left: 0 }, 500);
    });
});

CSS

#blog_slide_container {
position: relative;
width: 400px;
z-index: 5;
overflow: hidden;
border: 1px solid #000;
}
.block1 {
position: relative;
top: 0px;
left: 0px;
width: 400px;
z-index: 6;
background-color: #333;
color: #FFF;
}
.block2 {
position: absolute;
top: 0px;
left: 400px;
width: 400px;
z-index: 6;
background-color: #CCC;
color: #FFF;
}
#bottom_container {
position: relative;
float: left;
width: 100%;
height: 280px;
z-index: 3;
background-color: #000;
}

【问题讨论】:

  • 我不知道从哪里开始。方法是错误的。不要使用绝对位置定位外部元素。不要为每个元素设置动画。而是将两者都包装在一个 div 中并只为该 div 设置动画。然后您可以测量活动幻灯片的高度并相应地移动页脚。

标签: jquery jquery-animate


【解决方案1】:

编辑: 检查我更新的fiddle

添加了动态更改容器高度的代码。

查看动画版http://jsfiddle.net/skram/fVKDy/17/

另一个版本..http://jsfiddle.net/skram/fVKDy/16/


查看更新的fiddle 演示。

两件事,

  1. #blog_slide_container 添加了一个固定高度。当您制作动画时,动画 div 的位置变为 absolute,因此容器将自身重新调整为 0 height
  2. 添加了点击右键时在block1 上的显示。

【讨论】:

  • 我追求的是没有空白。我希望底部容器向上滑动,使其直接位于任一 DIV 下方,两者之间没有空格。
  • 立即查看,谢谢。让底部向上滑动的任何机会,否则它是完美的。
  • @Andy 我正在做那个.. :) 动画版jsfiddle.net/skram/fVKDy/12
  • 非常好。我会试着分解你所做的!再次感谢。
  • @Andy:不,你是对的。因为它是原版的,我认为这就是你想要的。检查帖子中的更新链接。
【解决方案2】:

我相信这就是你要找的。​​p>

http://jsfiddle.net/fVKDy/11/

我会很快回来并编辑解释(必须运行)。但基本上我添加了一个内部容器,它是动画而不是元素本身。

【讨论】:

  • 第一部分完美运行。当第二个 DIV 滑出时,我没有看到第一个滑入。
  • 对,我只做了一个方向,另一个方向差不多。
  • 信不信由你我实际上试图让它以相反的方式工作但失败了:(
【解决方案3】:

就是这样...我猜 -> http://jsfiddle.net/fVKDy/13/ 两个部分都在这里工作。 只需将另一个包装器放在您的块中并删除那些位置亲戚。您需要的唯一非静态定位是在附加包装器上。


这是另一个版本。 http://jsfiddle.net/fVKDy/5/ 我会稍微调整一下..

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-13
    • 1970-01-01
    • 1970-01-01
    • 2017-11-03
    • 1970-01-01
    • 1970-01-01
    • 2012-04-04
    相关资源
    最近更新 更多