Home >Web Front-end >CSS Tutorial >How to Create a Responsive Navbar Sidebar 'Drawer' in Bootstrap?

How to Create a Responsive Navbar Sidebar 'Drawer' in Bootstrap?

Susan Sarandon
Susan SarandonOriginal
2024-11-21 11:13:12212browse

How to Create a Responsive Navbar Sidebar

Create a Responsive Navbar Sidebar "Drawer" in Bootstrap

Bootstrap 5 introduces an official Offcanvas Component that simplifies the creation of sidebars. However, creating a sidebar without the component is still possible.

Considerations for Sidebar Navs

Sidebar navigation menus can pose various challenges:

  • Responsiveness: Should the sidebar adjust its width, visibility, or orientation based on screen size?
  • Multi-level: Should the nav items include sublevels, and how will their height be accommodated?
  • Toggling: Can the sidebar be toggled using a button or an icon?
  • Positioning: Should the sidebar be positioned alongside or behind page content?
  • Placement: Should the sidebar appear on the left or right side?
  • Scrolling: How should the sidebar scroll in relation to the page?
  • Animation: Should the sidebar slide, collapse, or fade into view?

Recommended Approach

In this specific case, instead of using col-auto on the right column, consider using col to fill the width when the menu is collapsed:

<div class="container-fluid h-100">
  <div class="row h-100">
    <div class="col-5 col-md-3 collapse width m-0 p-0 h-100 bg-dark">

Enhanced Sidebar with Fixed Width

The following updated sidebar is closer to the example you provided and features a fixed width, adaptive behavior, and a slide-left/right animation:

/* Set sidebar width */
.w-sidebar {
    width: 200px;
    max-width: 200px;
}

/* Adjust sidebar on collapsing */
.row.collapse {
    margin-left: -200px;
    left: 0;
    transition: margin-left .15s linear;
}

.row.collapse.show {
    margin-left: 0 !important;
}

/* Adjust sidebar on collapsing */
.row.collapsing {
    margin-left: -200px;
    left: -0.05%;
    transition: all .15s linear;
}

Full-Featured Sidebar

This advanced sidebar includes additional functionality:

  • Fixed width
  • Adaptive behavior (Collapses or overlays based on screen size)
  • Toggling
  • Responsive (Becomes an overlay on smaller screens)
/* Optional for overlay sidebar on small screens */
@media (max-width:768px) {

    .row.collapse,
    .row.collapsing {
        margin-left: 0 !important;
        left: 0 !important;
        overflow: visible;
    }
    
    .row > .sidebar.collapse {
        display: flex !important;
        margin-left: -100% !important;
        transition: all .3s linear;
        position: fixed;
        z-index: 1050;
        max-width: 0;
        min-width: 0;
        flex-basis: auto;
    }
    
    .row > .sidebar.collapse.show {
        margin-left: 0 !important;
        width: 100%;
        max-width: 100%;
        min-width: initial;
    }
    
    .row > .sidebar.collapsing {
        display: flex !important;
        margin-left: -10% !important;
        transition: all .2s linear !important;
        position: fixed;
        z-index: 1050;
        min-width: initial;
    }
}

The above is the detailed content of How to Create a Responsive Navbar Sidebar 'Drawer' in Bootstrap?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn