Quick Start: Implementing ddMenus in Your Next Project
What ddMenus is
ddMenus is a lightweight, flexible dropdown menu component designed for modern web apps. It provides accessible keyboard navigation, responsive behavior, and easy customization via CSS and simple JavaScript hooks.
When to use it
- Navigation bars with nested items
- Action menus in toolbars or card UIs
- Context menus that must work on both desktop and mobile
Quick installation
- Download or include ddMenus via npm:
bash
npm install ddmenus
- Or add the CDN script and stylesheet in your HTML:
html
<link rel=“stylesheet” href=“https://cdn.example.com/ddmenus/latest/ddmenus.min.css”> <script src=“https://cdn.example.com/ddmenus/latest/ddmenus.min.js”></script>
Minimal HTML structure
html
<nav class=“ddm-nav”> <ul class=“ddm-menu”> <li class=“ddm-item”><a href=“#”>Home</a></li> <li class=“ddm-item ddm-has-sub”> <button class=“ddm-toggle” aria-expanded=“false”>Products</button> <ul class=“ddm-submenu” hidden> <li class=“ddm-item”><a href=“#”>Product A</a></li> <li class=“ddm-item”><a href=“#”>Product B</a></li> </ul> </li> <li class=“ddm-item”><a href=“#”>About</a></li> </ul> </nav>
Basic initialization
html
<script> document.addEventListener(‘DOMContentLoaded’, () => { ddMenus.init(); // attaches behavior to .ddm-* elements }); </script>
Key configuration options
- animation: “none” | “fade” | “slide” (default: “fade”)
- closeOnBlur: true | false (default: true)
- breakpoint: px value where menu switches to mobile mode (default: 768)
Use:
js
ddMenus.init({ animation: ‘slide’, closeOnBlur: true, breakpoint: 720 });
Accessibility features
- Proper ARIA attributes (aria-expanded, role=“menu”) applied automatically
- Keyboard support: Tab, Enter/Space to open; Arrow keys to navigate; Esc to close
- Focus management returns to toggles when submenus close
Styling tips
- Customize variables or override CSS classes (.ddm-menu, .ddm-toggle, .ddm-submenu) to match your design system.
- Use CSS transitions for smoother animations:
css
.ddm-submenu { transition: opacity 200ms ease, transform 200ms ease; }
Example: Adding a keyboard shortcut to open the main menu
js
document.addEventListener(‘keydown’, (e) => { if (e.altKey && e.key === ’m’) { const mainToggle = document.querySelector(’.ddm-toggle’); mainToggle.click(); } });
Testing checklist before release
- Works on keyboard-only navigation
- Mobile responsive and touch-friendly
- Screen reader announcements for open/close states
- No focus traps after closing menus
Troubleshooting common issues
- Submenu not appearing: ensure .ddm-submenu is not permanently hidden by other CSS specificity.
- Focus lost on close: confirm ddMenus.init() was called after DOM ready and you haven’t removed focusable attributes.
- Styling conflicts: namespace or increase specificity for your overrides.
Conclusion
ddMenus provides a fast path to accessible, responsive dropdowns with minimal setup. Initialize with ddMenus.init(), tweak a few options, and override styles to match your UI — then validate keyboard and mobile behaviors before shipping.
Leave a Reply