【问题标题】:Jquery SlideToggle divs to slide (animate) upJquery SlideToggle divs 向上滑动(动画)
【发布时间】:2013-08-12 03:41:23
【问题描述】:

我想知道如何让这个完美的示例向上滑动而不是向下推动“导航”

http://jsfiddle.net/NPRfM/3/

...现在,它从上到下显示(将菜单向下推)...我想要反向...意思框向上滑动以显示并向上推导航 - 单击一个将菜单向上推以显示盒子。

这把小提琴在我想做的事情上的标记,只是我想让它滑起来揭示

我尝试了类似的方法,但没有成功

.animate({scrollTop: $('.dropdown').offset().top}, 250);

我是否还必须使用一些 css 定位来使其偏移? ...仍在学习 jquery 的诀窍

更新**

这就是我想要它做的事情:

http://jsfiddle.net/WFxLJ/1169/

....唯一的问题是,我想不出像第一个 jfiddle 那样的方法...它有 2 个功能。

-==单击 div 1===向上滑动 - 显示 div 1 的内容(在同一部分 2 中)

====在 ======显示 div 2 的内容后单击 div 2(在 1 的同一部分)

=====再次单击 div 2=======向下滑动框以隐藏部分

反之亦然

希望我说得通。

更新 2**

我几乎明白了!检查 jfiddle:

http://jsfiddle.net/b7C2d/315/

所以剩下的唯一一件事是菜单(黑色)需要向上推,所以它看起来像是在显示......我认为这只是 CSS 是固定定位吗..(将其更改为相对只会弄乱它)?

我找到了一个这样做的网站:

Dean

但是他们的代码比它应该的要复杂....加上它看起来像是从 2001 年开始的(我不会试图弄乱这段代码)..但无论如何这就是我想做的。

更新 3**

这是我能得到的最接近的,但它的行为就像缺少几个螺丝一样:(

http://jsfiddle.net/b7C2d/347/

【问题讨论】:

  • @Riksbreaker 我没有得到你想要的。
  • @Dh...我添加了另一个 jfiddle 并更新
  • 我仍在试图弄清楚为什么我对此持否定态度
  • 不确定,但我为你投了赞成票。

标签: jquery html css jquery-animate slidetoggle


【解决方案1】:

将此添加到您的 CSS 中:

#panels {
    height: 90px; 
    overflow: hidden;
}

.info-panel改成这个:

.info-panel { 
    display: none; 
    width: 300px; 
    padding: 50px 20px 20px 20px; 
    position: absolute; 
}

The Fiddle

【讨论】:

  • 谢谢。但问题仍然存在..它在灰色背景下滑动..我希望它从灰色背景内开始并上下推动黑色导航
【解决方案2】:

喜欢吗?

更新:jsFiddle

/* CREATED BY SHIVAM BHALLA */

(function($) {
    $('body').addClass('js');

    var $toggler = $('#toggler'),
        $wrapper = $toggler.find('.wrapper'),
        $pager = $toggler.find('.pager'),
        $content = $toggler.find('.content');

    $toggler.css('height', $content.height() + $pager.height());
    $wrapper.css('top', $content.height());
    $content.hide();

    $pager.find('a').on('click', function(e) {
        var $this = $(this),
            $target =  $( $(this).attr('href') ),
            $count = 0;

        if ($count === 0) {
            $wrapper.animate({'top' : 0});
            $count = 1;
            $this.addClass('selected');
        } 
        if ($target.hasClass('active')) {
            $('.selected').removeClass('selected');
            $wrapper.animate({'top' : $content.height()}, function() {
                $target.hide().removeClass('active');
            });
        } else {
            $wrapper.find('.active').slideUp().removeClass('active');
            $target.addClass('active').slideDown();
            $('.selected').removeClass('selected');
            $this.addClass('selected');
        }       

        e.preventDefault();            
    });



})(jQuery);

P.S:新的 js、html 和 css。禁用 Javascript 后看起来也不错。

【讨论】:

  • OMG 如此接近..是的,但是如果您第二次单击某个部分,如何关闭它...似乎您的部分仅打开一次并保持打开状态..您的部分太干净了!跨度>
  • Shivan 你只是一个人的天才!出色的工作哇,这么少的代码谢谢!所有功劳归您所有!
  • @Riskbreaker 谢谢:D
  • 是否也可以提供 a(标题)活动类?我尝试添加活动的toggleClass,但这只是让它不显示标题@Shivam
  • 我想通了......但是你这么快也许你可以帮我解决我的其他 SO 问题嘿:stackoverflow.com/questions/18154105/…
【解决方案3】:

您可能想尝试使用 jQuery UI tabs 并添加一些选项。

Working Example

 $(function () {
     $("#tabs").tabs({
         collapsible: true,
         active: false,
         fx: {
             height: 'toggle',
             duration: 'slow'
         }
     });

     // fix the classes
     $(".tabs-bottom .ui-tabs-nav, .tabs-bottom .ui-tabs-nav > *")
         .removeClass("ui-corner-all ui-corner-top")
         .addClass("ui-corner-bottom");
     // move the nav to the bottom
     $(".tabs-bottom .ui-tabs-nav").appendTo(".tabs-bottom");

 });

【讨论】:

  • 感谢看起来很棒的人...问题就像@Brewal 我希望将黑色导航上下推...所以它就像一个显示面板...就像我的 Dean 网站发布
  • 因为我一直在寻找动画效果,所以我将答案交给了 Shivam,但谢谢!
  • @Riskbreaker 这个解决方案也有动画效果
猜你喜欢
  • 1970-01-01
  • 2013-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-15
  • 2013-05-18
相关资源
最近更新 更多