编程语言
首页 > 编程语言> > javascript-将多个Bootstrap菜单合并为一个移动菜单?

javascript-将多个Bootstrap菜单合并为一个移动菜单?

作者:互联网

我一直在看这个先前问过的问题:

Consolidate Multiple Bootstrap 3 navbar menus on collapse

正如您在this fiddle中所看到的,它提供了一个很好的解决方案

问题是,对于我当前的布局,此解决方案并不完美.显示方式如下:

Current Display

它适用于我猜想的其他情况,但是在我的情况下,顶部导航栏将显示:在移动设备上没有导航栏,因此页面上只有一个导航栏,并且一旦用户单击切换开关,则不希望在其中放置徽标新菜单的中间,然后在页面的中间进行切换.

是否可以像这样进行最终显示:

Desired Display

我拥有更改HTML结构或添加任何其他JavaScript的完全访问权限,但是我无法更改第二个导航栏上徽标的设计.

当前HTML:

<nav class="navbar navbar-default" role="navigation">
  <div class="container-fluid">
    <!-- Collect the nav links, forms, and other content for toggling -->
    <div class="collapse navbar-collapse">
      <ul class="nav navbar-nav">
        <li><a href="#">Home</a></li>
        <li><a href="#">Contact</a></li>
        <li><a href="#">About</a></li>
        <li><a href="#">Support</a> </li>
      </ul>
      <div class="navbar-right">
        <select><option>My Portfolio</option></select>
      </div>
    </div><!-- /.navbar-collapse -->
  </div><!-- /.container-fluid -->
</nav>

<nav class="navbar navbar-default" role="navigation">
  <div class="container-fluid">
    <!-- Brand and toggle get grouped for better mobile display -->
    <div class="navbar-header">
      <button type="button" class="navbar-toggle collapsed" 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="#">Brand</a>
    </div>
    <!-- Collect the nav links, forms, and other content for toggling -->
    <div class="collapse navbar-collapse">
      <div class="navbar-right" role="search">
        <ul class="nav navbar-nav">
          <li><a href="#">Stuff</a></li>
          <li><a href="#">Pinterest</a></li>
          <li><a href="#">Facebook</a></li>
          <li><a href="#">Twitter</a></li>
          <li><a href="#">Blog</a></li>
        </ul>
      </div>
    </div><!-- /.navbar-collapse -->
  </div><!-- /.container-fluid -->
</nav>

解决方法:

所以我找到了答案,你可以看到this fiddle.

基本上我拿了this answer (funny it’s by the same person who answered the question I linked above),只是使用了prepend而不是append.

所使用的js:

$('#bs-example-navbar-collapse-1').on('show.bs.collapse', function () {
  $('#bs-example-navbar-collapse-1').prepend($('#sidebar').html());
});
$('#bs-example-navbar-collapse-1').on('hidden.bs.collapse', function () {
  $('#bs-example-navbar-collapse-1 .top-nav').remove();
});
$(window).on('resize', function () {
  if (window.innerWidth > 768) {$('#bs-example-navbar-collapse-1').collapse('hide');}
});

他正在从第一个列表#sidebar中获取HTML,并将其追加(在此处添加)到第二个列表中.然后,一旦折叠不再是页面上的课程,他将其再次删除.您可以在小提琴上看到不完美的解决方案.

标签:javascript,jquery,twitter-bootstrap,twitter-bootstrap-3,responsive-design
来源: https://codeday.me/bug/20191011/1893605.html