【问题标题】:Making a Collapsible Sidebar Nav in Bootstrap 4?在 Bootstrap 4 中制作可折叠的侧边栏导航?
【发布时间】:2018-09-09 01:29:01
【问题描述】:

我想知道是否有人可以帮助我开始如何创建一个侧边栏导航,例如 this template。我正在考虑购买模板并以这种方式浏览代码,但我认为它附带了大量可能会让我感到困惑的东西。

我正在尝试了解如何在您将看到的大屏幕上做到这一点

但在移动设备上,您会看到汉堡菜单

到目前为止,我得到了这个

<div class="container-fluid h-100">
    <div class="row h-100">
        <div class="col-2 collapse d-md-flex bg-light pt-2 h-100" id="sidebar">
            <ul class="nav flex-column flex-nowrap">
                <li class="nav-item">
                    <a class="nav-link" href="#">
                        <i class="fas fa-cog"></i>
                        <span class="badge badge-dark">4</span>
                    </a>
                </li>
                <li class="nav-item">
                    <a class="nav-link" href="#">Analytics</a>
                </li>
                <li class="nav-item">
                    <a class="nav-link" href="#">Export</a>
                </li>
            </ul>
        </div>
        <div class="col pt-2">
            <div class="row w-100">
                <div class="col-12 pt-2" style="background:coral;">
                </div>
            </div>
            <div class="row w-100">
                fakdfkaf
            </div>
        </div>
    </div>
</div>

【问题讨论】:

  • 侧边栏很复杂,因为有很多场景.. 覆盖内容、推送内容、流动或固定宽度、固定/粘性位置、响应式大/移动布局、可滚动、可切换、左/右、多-level 等。我最近回答了bounty question on this.. 但我怀疑您不会得到模板中显示的答案的统包答案。我 created this 在 4.0 发布时可能会让您入门,但我认为这个问题对于 SO 来说太宽泛了。

标签: html css bootstrap-4


【解决方案1】:

这应该让你开始:

#sidebar {
  max-width: 240px;
}
#sidebar nav {
  width: 100%;
}
@media (max-width: 768px) {
  #sidebar {
    max-width: 48px;
  }
  #sidebar .nav-link span {
    position: absolute;
    opacity: 0;
  }
}

@media (max-width: 576px) {
  #sidebar {
    max-width: 0;
    overflow-x: hidden;
  }
}

概念证明(我不得不调整你的标记):

body,html {height: 100%;}
#sidebar {
  max-width: 240px;
}
#sidebar nav {
  width: 100%;
}
@media (max-width: 768px) {
  #sidebar {
    max-width: 48px;
  }
  #sidebar .nav-link span {
    position: absolute;
    opacity: 0;
  }
}

@media (max-width: 576px) {
  #sidebar {
    max-width: 0;
    overflow-x: hidden;
  }
}
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
<link href="https://use.fontawesome.com/releases/v5.0.4/css/all.css" rel="stylesheet"/>

<div class="container-fluid h-100">
    <div class="row h-100">
        <div class="col d-md-flex bg-light h-100 p-0" id="sidebar">
            <ul class="nav flex-column flex-nowrap">
                <li class="nav-item">
                    <a class="nav-link" href="#">
                        <i class="fas fa-cog"></i>
                        <span class="badge badge-dark">4</span>
                    </a>
                </li>
                <li class="nav-item">
                    <a class="nav-link" href="#">
                      <i class="fas fa-chart-line"></i>
                      <span>Analytics</span></a>
                </li>
                <li class="nav-item">
                    <a class="nav-link" href="#">
                       <i class="fas fa-random"></i>
                       <span>Export</span>
                    </a>
                </li>
            </ul>
        </div>
        <div class="col pt-2">
            <div class="row">
                <div class="col-12 pt-2" style="background:coral;">
                </div>
            </div>
            <div class="row">
              <div class="col-12">
                fakdfkaf
              </div>
            </div>
        </div>
    </div>
</div>

注意:我强烈建议不要在今天的生产环境中使用 Bootstrap v4。它不是无错误的跨浏览器/跨设备。如果您需要一个生产就绪、灵活且可靠的库来弥补您团队中前端开发人员的不足,那么 v4 不是那个库。您绝对应该至少再坚持使用 v3 一年。

v4 目前需要扎实的 CSS 知识(以及大量工作!)才能用于 prod 环境。

【讨论】:

  • 谢谢,我必须查看您的代码并理解它。我不知道 Bootstrap 4,我认为它已经准备好了。我实际上更喜欢使用 CSS3 网格,但我需要支持 IE11。我在看 bulma,因为它看起来更简单,但我不知道是否有 IE11 支持(它只是在网站上说如果你需要 IE 支持,你可能想要使用 boostrap)。
  • @chobo2,确实。与v.3.3.*。 v4 在浏览器兼容性、示例、模板、插件等方面达到它还需要一段时间……v4 现在唯一拥有的是一个良好的开端。您需要更多才能使用它。当然,除非你弥补它的不足。您能解释一下为什么要使用 CSS 网格吗?我从很多人那里听说过,尤其是如果他们的 CSS 知识不够扎实的话。这真的让我很困惑。
  • 您好 Andrei,我想知道您是否仍然在生产环境中推荐 Bootstrap 3 而不是 Bootstrap 4。根据我去年年底的经验,我倾向于同意你的观点,但想知道今年的任何新 Bootstrap 4 更新是否改变了你的想法。
  • @Kyle,这取决于很多因素。关于项目规模,项目目标受众(浏览器、设备)需要多少定制以及需要哪些插件。另外,您需要支持哪些浏览器?它还取决于您(或您的前端工程师)在为您可能遇到的任何问题提出解决方法方面的熟练程度。我的标语是:“一切皆有可能,否则我做错了”。 :) 我已经 6 个月没有接触 v3,但我仍然认为对于中型和大型项目,使用 v3 更便宜且更有效,并且至少会再使用 6 个月。
  • @Kyle,阅读thisthis
猜你喜欢
  • 2017-08-29
  • 1970-01-01
  • 1970-01-01
  • 2016-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-24
  • 2020-04-12
相关资源
最近更新 更多