【问题标题】:Bootstrap 3: Catch event when navbar is collapsed or expandedBootstrap 3:在导航栏折叠或展开时捕获事件
【发布时间】:2014-04-14 15:33:55
【问题描述】:

使用引导程序 3:

导航栏折叠/展开时是否可以捕获?

我无法为此寻找活动。

编辑:

我有一个 90 像素高的徽标,所以导航栏的高度必须在 110 像素左右。

为了将菜单链接放置在靠近主要内容的位置,我因此在 60 像素处设置了一个边距顶部。当它崩溃时,我希望三个破折号(图标栏)也有 60px 的边距顶部。这样做时,菜单突然向下 60px + 60px = 120px - 60px 太多了。所以我想捕捉它何时折叠,然后将菜单链接的边距顶部更改为 0px,当它展开时,我想将其更改为 60px。

这是一个 bootply 示例:

http://www.bootply.com/120802

【问题讨论】:

标签: jquery twitter-bootstrap twitter-bootstrap-3


【解决方案1】:

也许这样:

$('.navbar-collapse').on('shown.bs.collapse', function() {
// do something
});

导航栏正在使用折叠 jQuery-Plugin。在那里你可以查找事件:http://getbootstrap.com/javascript/#collapse

编辑: 我添加了一个使用示例: http://jsbin.com/tizanoti/4/edit

【讨论】:

  • 您能否分享您的代码的相关部分,看看为什么这对您不起作用?
  • 感谢您的示例,但我不想知道何时单击该按钮。我需要捕捉菜单何时折叠/展开(从菜单链接更改为三破折号按钮)。
  • 我在您的示例代码中看不到任何问题。只需在您的函数中执行一些操作 (bootply.com/120826#)。在我的示例中,我没有捕捉到按钮单击事件。只是折叠的事件。
  • 现在我得到了你想要的。您可以通过获取视口宽度来实现这一点。还有一个事件“调整大小”,您可以在其中捕捉视口上的变化。导航栏将默认显示在引导程序中,视口大小为 768 像素。稍后,我可以给你看一个例子。但您也可以使用 css 媒体查询来完成
  • 您不能可靠地使用视口宽度,因为存在一些滞后;当从宽到窄与从窄到宽视口时,过渡点是不同的。 See this answer instead.
【解决方案2】:

手动启用:

$('.collapse').collapse()

折叠方法

.collapse("toggle") //Toggles the collapsible element   
.collapse("show")   //Shows the collapsible element 
.collapse("hide")   //Hides the collapsible element

折叠事件

show.bs.collapse    //Occurs when the collapsible element is about to be shown
shown.bs.collapse   //Occurs when the collapsible element is fully shown (after CSS transitions have completed)
hide.bs.collapse    //Occurs when the collapsible element is about to be hidden
hidden.bs.collapse  //Occurs when the collapsible element is fully hidden (after CSS transitions have completed)

reference

【讨论】:

    【解决方案3】:

    bootstrap cab 的 Collapse 方法可用于检测这些折叠/展开事件。包含 document.ready 以便仅在安全加载页面后进行此评估

    $(document).ready(function() {
    
     $('.collapse').on('shown.bs.collapse', function() {
       alert('shown'); 
     });
    
     $('.collapse').on('hidden.bs.collapse', function() {
       alert('hidden'); 
     });
    
    });
    

    【讨论】:

      【解决方案4】:

      现在我明白了。将此添加到您的 CSS:

      .navbar-collapse { margin-top: 0; }
      @media (min-width:768px) {
        .navbar-collapse { margin-top: 60px; }
      }
      

      编辑:更改为在没有较少变量的纯 css 中使用。

      【讨论】:

      • 上面这段代码是用less写的,对于css你必须用'768px'替换'@screen-sm-min'
      • 如果未来的引导版本将 768 更改为不同的东西,则会中断。回调或至少内省会更健壮。
      • 您不能可靠地使用视口宽度,因为存在一些滞后;当从宽到窄与从窄到宽视口时,过渡点是不同的。见this answer instead。 (最初我把这个评论放在上面的帖子下面,但属于这里......)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-06
      • 1970-01-01
      • 2014-12-29
      • 2014-05-09
      • 2020-08-16
      相关资源
      最近更新 更多