【问题标题】:Bootstrap 4 collapse sidebar into a navbar dropdownBootstrap 4 将侧边栏折叠成导航栏下拉菜单
【发布时间】:2019-12-27 05:08:07
【问题描述】:

我在左侧有一个导航栏和一个侧边栏,我想将其折叠到导航栏作为较小屏幕中的下拉选项。这就是它在大屏幕上的样子

当屏幕尺寸较小时,我希望发生这样的事情

这是我的代码

HTML 正文

<body>
  <!-- Navbar -->
  <nav class="navbar navbar-expand-md navbar-dark bg-dark py-2">
    <a class="navbar-brand" href="#">CDR</a>
    <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
      <span class="navbar-toggler-icon"></span>
    </button>

    <div class="collapse navbar-collapse" id="navbarSupportedContent">
      <ul class="navbar-nav mr-auto">
        <li class="nav-item">
          <a class="nav-link" href="#">Home</a>
        </li>
        <li class="nav-item">
          <a class="nav-link" href="#">Login</a>
        </li>
      </ul>
    </div>
  </nav>
  <div class="container-fluid flex-grow-1">
    <div class="row h-100">

      <!-- Sidebar -->
      <!-- Collapse as a navbar dropdown in smaller screens -->
      <div class="col-lg-3 col-sm-4 sidebar">
        <div class="sidebar-container mt-4 mx-2">
          <h4 class="text-capitalize py-2">Subjects</h4>
          <ul class="nav flex-column subjects">
            <li class="subject" data-subject="mathematics">
              <h5 class="subject-title mb-1">Mathematics</h5>
              <h6 class="subject-details m-0">
                <span class="teacher">Prof X.</span> |
                <span class="room">Room 113</span>
              </h6>
            </li>
            <li class="subject" data-subject="science">
              <h5 class="subject-title mb-1">Science</h5>
              <h6 class="subject-details m-0">
                <span class="teacher">Prof Y.</span> |
                <span class="room">Room 111</span>
              </h6>
            </li>
            <li class="subject" data-subject="english">
              <h5 class="subject-title mb-1">English</h5>
              <h6 class="subject-details m-0">
                <span class="teacher">Prof Z.</span> |
                <span class="room">Room 130</span>
              </h6>
            </li>
          </ul>
        </div>
      </div>

      <!-- Content -->
      <div class="col-lg-9 col-sm-8 content-container">
        <div class="row h-100">
          <div class="col-lg-9 col-md-9 col-sm-12 main-container"></div>
          <div class="col-lg-3 col-md-3 d-none d-md-block announcement-container">uwu</div>
        </div>
      </div>
    </div>
  </div>
</body>

CSS

html,
body {
  height: 100%;
  display: flex;
  flex-direction: column;
}

.sidebar {
  border-right: 1px solid var(--light-grey);
}

.subjects {
  user-select: none;
}

.subject {
  padding: 15px;
  cursor: pointer;
  border: 1px solid var(--lighter-grey);
  border-radius: 5px;
  margin-bottom: 5px;
}

.subject-title {
  font-size: 0.8rem;
  letter-spacing: 2px;
}

.subject-details {
  text-transform: capitalize;
  color: var(--gray);
  letter-spacing: 2px;
}

.active {
  font-size: 1rem;
  background-color: var(--lighter-grey);
  border-left: 4px solid var(--gray);
  padding-left: 12px;
}

.content-container {
  background-color: var(--content-bg-grey);
}

到目前为止,我还没有找到一种方法来做到这一点。正确的方法是什么?是否有允许这样做的引导设置,还是我需要使用 JS?如果有帮助的话,我也在使用 jQuery。

谢谢!

【问题讨论】:

    标签: html css twitter-bootstrap navbar sidebar


    【解决方案1】:

    只需将其添加到您的 html 代码中

    <nav class="navbar navbar-expand-md navbar-dark bg-dark py-2">
        <a class="navbar-brand" href="#">CDR</a>
        <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent"
            aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
            <span class="navbar-toggler-icon"></span>
        </button>
    
        <div class="collapse navbar-collapse" id="navbarSupportedContent">
            <ul class="navbar-nav mr-auto">
                <li class="nav-item">
                    <a class="nav-link" href="#">Home</a>
                </li>
                <li class="nav-item">
                    <a class="nav-link" href="#">Login</a>
                </li>
                <!-- this will appear only in small screen -->
                <li class="nav-item dropdown d-md-none">
                    <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button"
                        data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
                        Subjects
                    </a>
                    <div class="dropdown-menu" aria-labelledby="navbarDropdown">
                        <a class="dropdown-item" href="#">Mathematics</a>
                        <a class="dropdown-item" href="#">Science</a>
    
                        <a class="dropdown-item" href="#">English</a>
                    </div>
                </li>
            </ul>
        </div>
    </nav>
    <div class="container-fluid flex-grow-1">
        <div class="row h-100">
    
            <!-- Sidebar -->
            <!-- Collapse as a navbar dropdown in smaller screens -->
            <!-- i was added two classes (d-md-block d-none) -->
            <div class="col-lg-3 col-sm-4 sidebar d-md-block d-none">
                <div class="sidebar-container mt-4 mx-2">
                    <h4 class="text-capitalize py-2">Subjects</h4>
                    <ul class="nav flex-column subjects">
                        <li class="subject" data-subject="mathematics">
                            <h5 class="subject-title mb-1">Mathematics</h5>
                            <h6 class="subject-details m-0">
                                <span class="teacher">Prof X.</span> |
                                <span class="room">Room 113</span>
                            </h6>
                        </li>
                        <li class="subject" data-subject="science">
                            <h5 class="subject-title mb-1">Science</h5>
                            <h6 class="subject-details m-0">
                                <span class="teacher">Prof Y.</span> |
                                <span class="room">Room 111</span>
                            </h6>
                        </li>
                        <li class="subject" data-subject="english">
                            <h5 class="subject-title mb-1">English</h5>
                            <h6 class="subject-details m-0">
                                <span class="teacher">Prof Z.</span> |
                                <span class="room">Room 130</span>
                            </h6>
                        </li>
    
                    </ul>
                </div>
            </div>
    
            <!-- Content -->
            <div class="col-lg-9 col-sm-8 content-container">
                <div class="row h-100">
                    <div class="col-lg-9 col-md-9 col-sm-12 main-container"></div>
                    <div class="col-lg-3 col-md-3 d-none d-md-block announcement-container">uwu</div>
                </div>
            </div>
        </div>
    </div>
    

    【讨论】:

    • 请在答案中添加解释,这将有助于更好地理解解决方案。
    • 我被添加到我被添加的添加代码和类中
    • 很好的答案,但我想知道是否有办法使用我已经拥有的导航栏,因为它会有动态内容,这意味着在这种情况下,我还必须更新隐藏的下拉菜单对侧边栏进行更改。或者这会是一个整体更好的解决方案吗?
    猜你喜欢
    • 2017-08-29
    • 1970-01-01
    • 2014-12-24
    • 1970-01-01
    • 2019-12-04
    • 2014-07-03
    • 2012-03-12
    • 1970-01-01
    • 2017-07-22
    相关资源
    最近更新 更多