Nav lists

Dropdown menu markup can be used in 12 columns grid, aligned to the left and right, and have single or multiple levels. Nested levels in multi column nav list use custom extension that saves currently opened level in cookies and shows a link to parent level. Inner dropdowns support all available elements: badges, checkboxes, radios, headers, dividers etc. Please note - mega dropdown menu uses custom class names along with default ones and all these classes are required for a correct functioning.

Examples:

Content lists

Besides simple navigation lists, dropdown menu can contain more complex lists of content: horizontal and vertical buttons list, all types of media lists, progresses, language selection etc etc. Just use standard content lists markup, custom mega menu markup and adjust menu width accordingly. For long lists, add .dropdown-scrollable class to .dropdown-body container to limit height to 340px and make the content scrollable. You can also use color utility classes to change menu color, but bear in mind that some elements require color adjustments in this case.

Examples:

Content components

Besides navigation, mega dropdown menu can also contain all available components: forms, buttons, cards, 3rd party extensions, tables, images, videos etc. The only one exception is nested dropdowns with data-toggle="dropdown" attibute due to default BS limitation. If menu doesn't have 100% width, in some cases you would need to set minimum width by using sizing utility classes, because most of the components are fluid by default and their width depends on parent container width. All components are adapted for mobile browsers.

Examples:

Content nav

This option is completely custom - Bootstrap doesn't support content nav components in dropdown menu by default, because of the class name conflicts and dropdown.js component limitation. This has been improved and both tabs and pills components can be used in dropdowns. There is a requirement - dropdown menu container should have .dropdown-content class to keep menu opened when links inside are clicked. Tabs and pills can be placed anywhere in the dropdown - top, center, bottom, left, right, can be nested and can have any type of content.

Examples:

Menu header styles

All dropdown menus support custom header with a number of elements - plain text, text links, buttons, single icons and icon groups, small images, badges and badge pills. Thanks to the power of flex model, all elements can be easily aligned vertically and horizontally. Vertical and horizontal spacing of dropdown header is equal to menu body spacing for better content alignment, but you can easily change it in $dropdown-content-header-padding-y variable or using spacing utility classes. Horizontal spacing of menu header depends on menu body spacing.

Examples:

Menu footer styles

All dropdown menus support custom footers with a number of elements - plain text, text links, buttons, single icons and icon groups, small images, badges and badge pills. Thanks to the power of flex model, all elements can be easily aligned vertically and horizontally. Menu footer has top border and light grey background color by default, but also support custom colors by adding color utility classes (some elements require minor color adjustments as well). You can also control vertical spacing and other options with our set of utility classes.

Examples:

Form layouts

Dropdown menu supports all available form layouts - inline, vertical and horizontal. You can use the forms just like anywhere else, they don't require any additional classes or styling. But you need to control dropdown width in order to fit the form rows correctly, because all forms are fluid by default. You can also control form layouts on small screens with grid classes, in case if you need to display complex forms with multiple columns. Examples below demonstrate form layouts, complex multi column form and separate group of form controls.

Examples:

Menu sizing

Dropdown menu has several width options: default dropdown width defined in $dropdown-min-width variable, responsive width and min-width utility classes (in pixels and percents), auto width that depends on child content width and full width. Auto width option requires .mega-menu-left or .mega-menu-right classes added to .nav-item; full width option requires .mega-menu-full class added to .nav-item. These 2 options should not have .dropdown or .dropup classes since position of parent container should be default (static).

Examples:

Content grid

Mega menu component supports a responsive, mobile first fluid grid system that appropriately scales up to 12 columns as the device or viewport size increases. Using a single set of .col-[breakpoint]-[count] grid classes, you can create a basic grid system that starts out stacked on mobile devices and tablet devices (the extra small to small range) before becoming horizontal on desktop (medium) devices. Place grid columns in any .row inside mega menu dropdown to make them stackable on mobile or .col-[count] classes to avoid stacking.

Examples:

Navigation classes
This table contains all classes related to the horizontal navbar navigation. Navbar navigation links build on default .nav options with their own modifier class and require the use of toggler classes for proper responsive styling. Navigation in navbars will also grow to occupy as much horizontal space as possible to keep your navbar contents securely aligned. Dropdown menus require a wrapping element for positioning, so be sure to use separate and nested elements for .nav-item and .nav-link.
Class Description
Navigation elements
.nav Global wrapper for navigation list. It uses default Bootstrap's styles of .nav component and similar markup options.
.navbar-nav for a full-height and lightweight navigation (including support for dropdowns).
.nav-item This class is required in an immediate nav link parent element in any .nav container: sidebar, navbar, nav groups, tabs, pills etc.
.nav-item.dropdown Combination of these classes is required for items with dropdown menu - nav item with .dropdown class is a dropdown toggle and menu wrapper that declares position: relative;.
.nav-item.dropup Same as .dropdown, but this class is required in bottom navbars, because it triggers dropdown menus above elements in navbar. Dropdown caret direction in bottom navbar also depends on this class.
.navbar-nav-link A custom class, unlike Bootstrap's default .nav-link class it doesn't affect navs in dropdowns. This class is responsible for navigation link styling and is also required as a part of nav list element structure. It's also a target for .active and .disabled classes.
Dropdowns
.dropdown-user This class is used in menu with user pic - image size is calculated dynamically in SASS and .dropdown-user is needed to target the container where these calculations need to run.
.dropdown-content If you need to prevent dropdown from closing when you interact with it, add .dropdown-content to default .dropdown-menu container. This doesn't disable click event outside the dropdown though.
.dropdown-content-header Class for the header within .dropdown-content - custom element with padding that mathches custom dropdown body and footer padding. Can contain multiple components on both sides.
.dropdown-content-body Class for the body within .dropdown-content - element with custom padding, by default is similar to .card-body, but can be changed in SASS variables if you want to increase or decrease custom dropdown spacing.
.dropdown-content-footer Class for the footer within .dropdown-content - custom element with padding that mathches custom dropdown body and header padding. Can contain multiple components on both sides.
.dropdown-scrollable This class sets max-height to the dropdown body and adds vertical scrollbar. Can be added to .dropdown-content-body container to make only body scrollable or to the entire .dropdown-menu. Default max-height value is 340px.
.mega-menu-[alignment] These classes control the percent-based width of the menu. Options for [alignment]: full - sets 100% width, left - aligns menu to the left, right - aligns menu to the right. Note - make sure you don't use .dropdown and .dropup classes in .nav-item container.
.w-[breakpoint]-[value] Set of responsive utility classes that set min-width property to the .dropdown-menu container. Very useful in dropdowns with long content. Available options for [value] (in pixels): 200, 250, 300, 350, 400, 450, 500, 550, 600.
Misc
[data-hover="dropdown"] Data attribute that triggers dropdown toggling on hover and click. It also affects all submenus within this menu, so needs to be added to [data-toggle="dropdown"] only on top level.