How to create a multi-level dropdown in Bootstrap navbar?
To create a multi-level drop-down menu in the Bootstrap navigation bar, 1. You need to build a multi-level menu through a nested
- structure; 2. Add a custom CSS to control the submenu position, such as setting the relative positioning of .dropdown-submenu and the left offset of .dropdown-menu; 3. Use data-bs-toggle="dropdown" or custom JS to implement the submenu expansion logic, such as clicking to switch the display status; 4. Optimizing mobile interaction, it is recommended to click to expand, limit the levels, and consider using the folded menu to adapt to touch screen operations.

Bootstrap's navigation bar (navbar) only supports single-layer drop-down menus by default, but many times we want to add multi-level submenu to the navigation (such as expanding the second or even the third level menu after mouse hovering or clicking). It is actually not difficult to implement this function. It mainly extends the native functions of Bootstrap through custom CSS and JS.

The following are the specific operation methods and precautions:
How to create a multi-level drop-down menu in the Bootstrap navigation bar
Bootstrap itself does not directly support multi-level drop-down menus, so you need to manually modify the HTML structure and cooperate with some CSS or JavaScript to make the secondary menu appear. The key point is to correctly nest <ul></ul> elements and control how they appear.

The basic structure is as follows:
<ul class="navbar-nav">
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-bs-toggle="dropdown">First-level menu</a>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="#">Submenu1</a></li>
<li class="dropdown-submenu">
<a class="dropdown-item dropdown-toggle" href="#" data-bs-toggle="dropdown">Items with submenu</a>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="#">Second-level menu 1</a></li>
<li><a class="dropdown-item" href="#">Second-level menu 2</a></li>
</ul>
</li>
</ul>
</li>
</ul>This will build a basic multi-level structure, but it also requires style support to display it normally.

Add CSS style to control the position of submenu
By default, Bootstrap's .dropdown-menu is hidden, and even if you set up a nested .dropdown-menu , it will appear below the parent menu, not next to it.
You need to add a CSS to make it display horizontally and position it to the right place:
.dropdown-submenu {
position: relative;
}
.dropdown-submenu .dropdown-menu {
top: 0;
left: 100%;
margin-top: -1px;
} This CSS allows the submenu to pop up to the right and display it against the parent menu. If you want to pop up from right to left, you can change it to right: 100% .
Use JavaScript to control how submenu is triggered
Although Bootstrap provides data-bs-toggle="dropdown" attribute to control the display of the primary menu, the default is not automatically expanded for the secondary menu. You can choose the following ways to deal with it:
- Dropdown plugin using Bootstrap : Add
data-bs-toggle="dropdown"attribute to the link to the submenu. - Add custom JS : prevents the menu from closing when clicked, or automatically expanding when hovering.
For example:
document.querySelectorAll('.dropdown-submenu > a').forEach(link => {
link.addEventListener('click', function (e) {
e.stopPropagation();
e.preventDefault();
const submenu = this.nextElementSibling;
submenu.classList.toggle('show');
});
});This allows the user to manually switch the display status of the submenu when clicking an item with a submenu.
Mobile adaptation and interaction optimization
Multi-level menus may not be very friendly on mobile, especially when they are nested too deeply. It is recommended to make the following optimizations:
- Disable the hover behavior of the submenu on the small screen and click to expand instead.
- Avoid nesting too many levels, it is best to have two layers at most.
- Consider using a folding menu (Collapse) instead of a drop-down menu, which is more suitable for touch screen operations.
Basically that's it. The key to implementing multi-level drop-down menus is structural nesting, CSS positioning and appropriate interaction logic. It doesn't seem complicated, but it's easy to ignore details in actual projects, especially the responsive design part.
The above is the detailed content of How to create a multi-level dropdown in Bootstrap navbar?. For more information, please follow other related articles on the PHP Chinese website!
Hot AI Tools
Undress AI Tool
Undress images for free
Undresser.AI Undress
AI-powered app for creating realistic nude photos
AI Clothes Remover
Online AI tool for removing clothes from photos.
Clothoff.io
AI clothes remover
Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!
Hot Article
Hot Tools
Notepad++7.3.1
Easy-to-use and free code editor
SublimeText3 Chinese version
Chinese version, very easy to use
Zend Studio 13.0.1
Powerful PHP integrated development environment
Dreamweaver CS6
Visual web development tools
SublimeText3 Mac version
God-level code editing software (SublimeText3)
How to use Bootstrap forms?
Aug 05, 2025 am 08:34 AM
The key to using Bootstrap forms is to master its structure and use of classes. 1. The basic form structure uses form-control, form-label, form-text and form-check to style input, label, help text and check boxes; 2. Horizontal forms are displayed in line with labels and controls by combining grid systems (such as col-sm-*), and inline forms use practical classes such as d-flex to replace the removed form-inline in Bootstrap5; 3. Form verification uses is-valid or is-invalid classes to match valid-feedback and invalid-feedback to display inversely.
How to use Bootstrap form validation?
Aug 05, 2025 am 05:59 AM
Bootstrapformvalidationusesbuilt-instylestoshowvalid/invalidstateswithvisualfeedback.1.Addnovalidatetodisablebrowsertooltips.2.Useneeds-validationforreal-timefeedbackorwas-validatedaftersubmission.3.IncludeHTML5validationattributeslikerequired.4.Disp
How to create a sticky sidebar on scroll in Bootstrap
Aug 22, 2025 am 09:02 AM
The easiest way to create a sticky sidebar with Bootstrap is to use the built-in sticky-top class with top offset. 1. Add sticky-top class on the sidebar content wrapping element and set style="top:20px;" to avoid overlapping with the head; 2. Make sure that the parent container (such as col-md-3) does not have styles that affect sticky behavior, such as overflow:hidden; 3. Optionally set position:sticky through custom CSS and add height:100vh and overflow-y:auto to support scrolling in the sidebar; 4. If you need to be compatible with old browsers or dynamic controls, you can use
How to customize the Bootstrap navbar toggle
Aug 12, 2025 am 06:57 AM
Tochangethetoggleiconcolor,modifythestrokevalueinthebackground-imageSVGdataURLoruseacustomclasswithanewSVGcolor.2.Resizethetogglebyadjustingthebackground-sizepropertyof.navbar-toggler-iconortweakpaddingandfontsizeforbetterproportions.3.Replacethedefa
How to use Bootstrap with Sass
Aug 18, 2025 am 06:15 AM
Using Bootstrap and Sass requires first installing and configuring the environment, and then efficient development is achieved through variable customization and compilation. 1. Make sure that Node.js is installed, create the project and run npminit-y initialization; 2. Install Bootstrap and DartSass: npminstallbootstrapsass; 3. Create the scss folder and create a new main.scss, first overwrite the Bootstrap variable (such as $primary:#ff6b35;) and then import @import"../node_modules/bootstrap/scss/bootstrap"; 4.
How to create a responsive sidebar with Bootstrap?
Aug 08, 2025 am 03:04 AM
Using Bootstrap5's Offcanvas component and responsive grid system, it is easy to create a responsive sidebar that slides out on a small screen and is fixedly displayed on a large screen; 2. Trigger the offcanvas display menu through the "ToggleSidebar" button on mobile devices, and the medium and above screen sidebars are always visible as col-md-3 columns; 3. Optionally add desktop folding function through JavaScript, combined with CSS media query to achieve click shrink into narrow bars and hide text; 4. It is recommended to use icons to optimize compact views, keep navigation concise, avoid unnecessary fixed positioning, and test the response effect through developer tools, and ultimately achieve a smooth user experience with minimal code.
How to change the default Bootstrap colors
Aug 21, 2025 am 03:10 AM
To change the default color of Bootstrap, the most recommended way is to redefine and recompile via the Sass variable. 1. Create a custom Sass file (such as custom.scss); 2. Overwrite its color variables before importing Bootstrap, such as $primary:#ff6b35; 3. Optionally add custom colors through map-merge to extend the palette; 4. Use the Sass compiler (such as DartSass, Webpack, etc.) to generate customized CSS; 5. If Sass cannot be used, you can use CSS override (requires!important, not recommended) or CSS custom attributes (only partially valid). The correct way is to modify it first
How to use Bootstrap buttons and button groups?
Aug 04, 2025 am 12:18 AM
Bootstrap buttons achieve diversified design by combining btn classes and style classes. 1. Use btn-primary to btn-link and other classes to create different style buttons, combine btn-lg and btn-sm to resize, and use btn-outline-* to create outline buttons; 2. Group buttons horizontally through btn-group containers and add btn-group-vertical to achieve vertical stacking; 3. Apply btn-group-lg or btn-group-sm to unify the size; 4. Nesting dropdown-toggle and dropdown-menu in the button group to implement the dropdown menu, and Boots needs to be introduced


