【问题标题】:How to put animated collapse close in my menu, when click outside the button当在按钮外部单击时,如何在我的菜单中关闭动画折叠
【发布时间】:2014-02-14 06:33:11
【问题描述】:

我的导航栏是这样的:

http://jsfiddle.net/Hg4Ts/3/

我的html代码:

<div class="wrapper">
    <div class="navbar navbar-default" role="navigation">
        <div class="navbar-header">
          <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
          <a class="navbar-brand" href="#">Project name</a>
        </div>
        <div class="navbar-collapse collapse">
          <ul class="nav navbar-nav">
            <li class="active"><a href="#">Link</a></li>
            <li><a href="#">Link</a></li>
            <li><a href="#">Link</a></li>
            <li class="dropdown">
              <a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a>
              <ul class="dropdown-menu">
                <li><a href="#">Action</a></li>
                <li><a href="#">Another action</a></li>
                <li><a href="#">Something else here</a></li>
                <li class="divider"></li>
                <li class="dropdown-header">Nav header</li>
                <li><a href="#">Separated link</a></li>
                <li><a href="#">One more separated link</a></li>
              </ul>
            </li>
          </ul>
          <ul class="nav navbar-nav navbar-right">
            <li class="active"><a href="./">Default</a></li>
            <li><a href="../navbar-static-top/">Static top</a></li>
            <li><a href="../navbar-fixed-top/">Fixed top</a></li>
          </ul>
        </div><!--/.nav-collapse -->
    </div>
</div>

我的 javascript 代码:

$(document).ready(function () {
    function CloseNav() {
        $(".navbar-collapse").stop().css({ 'height': '1px' }).removeClass('in').addClass("collapse");
        $(".navbar-toggle").stop().removeClass('collapsed');
    }

    $('html').click(function (event) {
        var clickover = $(event.target);
        var _opened = $(".navbar-collapse").hasClass("navbar-collapse in");
        if (_opened === true && !clickover.hasClass("navbar-toggle")) {
            CloseNav();
        }

    });
});

当在按钮外部单击时,如何在我的菜单中设置动画折叠关闭。在按钮外部单击时关闭,但没有动画效果。如何仅在折叠打开时菜单按钮更改颜色?

【问题讨论】:

  • 动画可以使用api.jquery.com/animate
  • 我的javascript知识很贫乏。我需要 jQuery 函数。谢谢
  • 没有人会为你写代码。你必须通过给定的资源来学习它。
  • @user3216077 animate() 一个jQuery函数
  • flec - 我知道,但如果我有时间学习它并且不会尝试,我不会寻求帮助。

标签: javascript jquery html css twitter-bootstrap-3


【解决方案1】:

此解决方案可能适合您。将您的 CloseNav() 函数切换到以下位置:

    function CloseNav() {
        $(".navbar-collapse").stop().animate({'height': 0},300, function () {
            $('.navbar-collapse').removeClass('in').addClass("collapse");
        });
        $(".navbar-toggle").stop().removeClass('collapsed');
    };

看起来只需将.collapse 类添加到导航栏就会立即切换高度。如果您制作动画然后添加类,它会创建您想要的上滑效果。

fiddle demo

【讨论】:

  • 谢谢。您是否看到我的第二个问题:如何仅在折叠打开时才更改菜单按钮的颜色,并单击其中的关闭折叠,返回开始颜色,而不是聚焦?
  • 我在您的帖子中没有看到任何 CSS,但这就是我要开始的地方。尝试查看:hover 功能或添加一些样式到已经通过 JS 打开的类之一。
  • 我尝试了这个并且 :focus, :active 没有结果。我认为只有 javascript 才能做到。再次感谢您。
猜你喜欢
  • 1970-01-01
  • 2018-04-30
  • 2020-02-29
  • 2018-03-25
  • 1970-01-01
  • 2015-11-18
  • 1970-01-01
  • 2019-11-29
  • 2016-02-22
相关资源
最近更新 更多