jquery - 如何在小屏幕上将 Bootstrap 导航选项卡显示为可折叠按钮?

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

我正在构建应在所有设备上响应的单页应用程序。到目前为止一切正常,但有一件事引起了我的注意。当 lgmd 屏幕尺寸时,主屏幕上的选项卡会水平显示。如果我在浏览器中打开 响应式设计模式,它们会垂直显示。该演示文稿在屏幕上占用了大量空间。我想知道它们是否可以显示为可折叠按钮,用户可以在其中单击并选择选项卡?这会在屏幕上节省一些空间,而且看起来肯定更好看。这是我目前所拥有的示例:

.navbar-brand {
    padding: 0px;
}
.navbar-brand>img {
    height: 100%;
    min-height: 45px;
    padding: 5px;
    width: auto;
}
.brand2 {
    height: 100%;
    height: 50px;
    padding: 5px;
    margin-left: 5px;
    width: auto;
    display: block;
}
.my-jumbotron {
    padding-top: 45px;
    padding-bottom: 10px;
    margin-bottom: 5px;
    background-color: #333;
    color: #fff; 
}
.page-footer {
    margin-bottom: 5px;
    background-color: #333; 
    border-radius: 6px;
    padding: 5px;
    color: #fff;
}
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Single Page Application</title>
  <link rel="icon" type="image/x-icon" href="images/favicon.ico" />
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
</head>

<body>
  <nav id="myNavbar" class="navbar navbar-default navbar-inverse navbar-fixed-top" role="navigation">
    <div class="container">
      <div class="navbar-header">
        <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbarCollapse">
                    <span class="sr-only">Toggle navigation</span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                </button>
        <div class="row">
          <div class="col-xs-4 col-sm-6">
            <a class="navbar-brand" data-toggle="tooltip" data-placement="top" title="MyApp home page" href="https://www.example.com" target="_blank"><img class="img-rounded" src="images/logo.png" alt="MyApp" /></a>
          </div>
          <div class="col-xs-4 col-md-6">
            <img class="img-rounded brand2" src="images/app.jpg" alt="Img" />
          </div>
        </div>
      </div>
      <div class="collapse navbar-collapse" id="navbarCollapse">
        <ul class="nav navbar-nav" id="nav_menu">
          <li><a href="#" data-id="home">Home</a></li>
          <li><a href="#" data-id="contact">Contact</a></li>
          <li><a href="#" data-id="help">Help</a></li>
        </ul>
      </div>
    </div>
  </nav>
  <div class="container">
    <div class="jumbotron my-jumbotron">
      <h2>Single Page Application</h2>
    </div>
    <div id="main_container">
      <ul class="nav nav-tabs nav-justified">
        <li class="active"><a data-toggle="tab" href="#tab1">Tab 1</a></li>
        <li><a data-toggle="tab" href="#tab2">Tab 2</a></li>
        <li><a data-toggle="tab" href="#tab3">Tab 3</a></li>
        <li><a data-toggle="tab" href="#tab4">Tab 4</a></li>
      </ul>
      <div class="tab-content">
        
        <div id="tab1" class="tab-pane my-tab-pane fade in active">
          <h3>Tab 1</h3>
          <p>Show tab 1.</p>
        </div>
        
        <div id="tab2" class="tab-pane my-tab-pane fade">
          <h3>Tab 2</h3>
          <p>Show tab 2.</p>
        </div>
        
        <div id="tab3" class="tab-pane my-tab-pane fade">
          <h3>Tab 3</h3>
          <p>Show tab 3.</p>
        </div>
        
        <div id="tab4" class="tab-pane my-tab-pane fade">
          <h3>Tab 4</h3>
          <p>Show tab 4.</p>
        </div>  
      </div>
      <div class="row">
        <div class="col-sm-12">
          <footer class="page-footer">
            <div class="container-fluid">
              <div class="row">
                <div class="col-xs-12 col-sm-12 col-md-2 col-lg-2">
                  <a href="http://example1.com" data-toggle="tooltip" data-placement="top" title="example1.com">Example1.com</a>
                </div>
                <div class="col-xs-12 col-sm-12 col-md-2 col-lg-2">
                  <a href="http://example2.com/" data-toggle="tooltip" data-placement="top" title="example2.com">Example2.com</a>
                </div>
                <div class="col-xs-12 col-sm-12 col-md-2 col-lg-2">
                  <a href="http://example3.com/" data-toggle="tooltip" data-placement="top" title="example3.com">Example3.com</a>
                </div>
                <div class="col-xs-12 col-sm-12 col-md-2 col-lg-2">
                  <a href="http://example4.com/" data-toggle="tooltip" data-placement="top" title="example4.com">Example4.com</a>
                </div>
              </div>
            </div>
          </footer>
        </div>
      </div>
    </div>
    <script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
</body>

</html>

如果您检查上面的示例,您会看到选项卡彼此重叠。如果您查看右上角,您会看到可以单击的按钮。然后您将在菜单 HomeContactHelp 中获得元素列表。我想为小屏幕上的选项卡提供类似的东西。如果有人知道实现该目标的好方法,请告诉我。

最佳答案

希望这会有所帮助。我把你的导航标签做了个 fiddle

https://jsfiddle.net/nk7wp0m8/4/

@media only screen and (max-width:800px) {
  .nav-tabs.nav-justified>li {
    float: left;
    width: 25%;
  }
}

如果您要确定您的页面让它们开始堆叠的宽度,那么您可以使用上述媒体查询并强制它们全部并排显示。

编辑

https://jsfiddle.net/7cL126q9/

这个 fiddle 给你一个显示,比如你的家、联系人等的导航。

关于jquery - 如何在小屏幕上将 Bootstrap 导航选项卡显示为可折叠按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53852634/

相关文章:

javascript - 文件的查询字符串是什么?

javascript - 移动设备上的 Bootstrap 聊天小部件

javascript - 在同一个 Google map 上同时显示多条路线

html - 有没有办法在html中的contenteditable div中设置插入符号高度

css - 试图让 div 漂浮在另一个 div 旁边

css - 列表项在悬停时更改颜色,而不是在嵌套跨度悬停时

jquery - 调整窗口大小时未触发 CSS 转换

javascript - 使用 jQuery 在粗体文本和普通文本之间切换

javascript - 使用 Javascript 在动态生成的链接中传递数据

javascript - IE8 的 Object.defineProperty 替代品