【问题标题】:Footer animation and jQuery?页脚动画和jQuery?
【发布时间】:2011-05-17 02:42:46
【问题描述】:

我有一个页脚,我使用sticky footer css 将其保留在页面底部。我希望我的页脚开始折叠,当用户单击一个按钮时,我希望它展开,然后将“展开”链接与页脚 div 内的不同容器 div 交换。

我将如何使用 jQuery、HTML 和 CSS 实现这一点?

编辑:

我希望页脚以大约 20 像素的高度开始。在页脚中,应该有一个按钮(我猜是链接),上面写着“更多”或“关于”。当用户单击时,页脚应该变高并显示更精细的 div,并带有替代内容(不是“更多”链接)。

【问题讨论】:

  • @moshe ,你是不是在看类似这样的页脚 manatelugumovies.net ???
  • 尝试使用jquery的slideToggle api.jquery.com/slideToggle
  • 我不太清楚您所说的“然后将'展开'链接与页脚 div 内的不同容器 div 交换”是什么意思。你能详细说明一下吗?
  • @gov - 问题是我希望页脚从 20px 开始,然后高出大约 160px。
  • @Moshe:我更新了我的答案。祝你好运!

标签: jquery html css footer sticky-footer


【解决方案1】:

This jsFiddle 演示了滑入的基本方法。

以下是您将在那里找到的内容的摘要:

  1. 构建您的 css,使初始页脚高度为 0。确保也将取决于页脚高度的其他 css 值清零(即 #main 上的 padding-bottom#footer 上的 margin-top )。您还需要在#footer 上设置overflow:hidden,以确保页脚内容在折叠时不可见。

  2. 在链接的click() 处理程序中,使用jQuery 的animate() 函数来增加#footer 的高度(并同时进行其他必要的填充/边距调整)。

  3. animate() 函数有四个参数 (see docs here),最后一个是动画完成时触发的回调。您可以在此回调函数中触发链接交换。

因此,假设您从CSSStickyFooter 开始使用 HTML/CSS,那么您的其余代码将如下所示...

你的 CSS(这在 stickyfooter css 之后):

#main { 
    padding-bottom: 0; 
}  
#footer { 
    margin-top: 0;
    height: 0; 
    overflow:hidden;
} 

你的 Javascript 应该是这样的:

$(document).ready(function(){
    $('#showFooter').click(function(evt) {
        $('#footer').animate({
            'margin-top' : -150,
            'height' : 150
        }, null, null, function() {
            alert("footer slide-in is complete.");
            // do your "link swap" operation (whatever it is) right here. 
        });
        $('#main').animate({
            'padding-bottom' : 150
        });
    });
});

编辑:如果您想让页脚最初可见(以较小的尺寸),然后让它“滑出”到更大的尺寸,只需设置您想要的任何高度(而不是 0 ) 在我上面显示的 css 中。

您可以将任何您喜欢的内容放入页脚 div 中——因此,如果您想在较小的时候显示一组内容,而在较大的时候显示不同的内容,那么只需将这些块放入页脚中的两个单独的 div 中.将它们设置为position:absolute;top:0;,这样它们就会在页脚中相互重叠。最初将“扩展视图”设置为display:none,然后在单击处理程序(或动画回调)中使用jquery的fadeIn()fadeOut()函数来交换页脚中展开和折叠视图的可见性.

Here's the jsFiddle example, adjusted accordingly


现在,如果您真的想变得花哨,您可以使页脚高度取决于两个不同内容视图的高度。 (这可能是我会做的)。

here's a "fancier" jsFiddle that figures the heights from the content


编辑:如果你交换两个动画调用的顺序(所以$('#main').animate(...)$('#footer').animate(...)之前),动画将运行更流畅,滚动条不会闪烁/动画期间关闭。 (我本来应该这样展示的)。 here's an updated jsFiddle, that shows this minor change.

【讨论】:

  • 倒数第二个链接中的错字:fsfiddle,您的意思是jsFiddle?谢谢!
  • :-) 是的,我的意思是“jsFiddle”。我修好了它。谢谢!
  • @Moshe:animate() 函数,正如我在这里使用的那样,只是将指定的 CSS 值从它们的当前值更改为指定值。 read the documentation。如果你想要不同的高度,代码是一样的,只是你指定的像素值需要改变。为什么不使用我提供的 jsFiddle 示例进行一些实验?进行更改,单击运行按钮,看看会发生什么。自己回答这个问题应该很容易……而且您可能会在此过程中学到一些东西。 ;-) 祝你好运!
  • 谢谢,我已经这样做了。你可以在bitachon.org/new 的底部看到结果。请记住,页脚中的表单实际上还没有发送任何信息。顺便说一句,我们的脚本可用于根据单击的内容在页脚中显示各种内容。再次感谢。
  • @Moshe:对我来说看起来很可靠。很高兴你把它整理好了。
猜你喜欢
  • 2013-01-23
  • 1970-01-01
  • 2014-07-31
  • 2012-10-26
  • 1970-01-01
  • 2012-09-26
  • 1970-01-01
  • 1970-01-01
  • 2013-01-27
相关资源
最近更新 更多