{"id":3788,"date":"2026-10-14T09:01:39","date_gmt":"2026-10-14T09:01:39","guid":{"rendered":"https:\/\/www.itechmagazine.com\/keyboard-accessible-menu-guide\/"},"modified":"2026-10-14T09:01:39","modified_gmt":"2026-10-14T09:01:39","slug":"keyboard-accessible-menu-guide","status":"publish","type":"post","link":"https:\/\/www.itechmagazine.com\/keyboard-accessible-menu-guide\/","title":{"rendered":"Keyboard Accessible Menu: How to Build One That Works for Everyone"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">A <strong>keyboard accessible menu<\/strong> should let people open, browse, and close your site\u2019s navigation without touching a mouse. That sounds basic, yet many menus fail because they rely on hover, hide focus outlines, or use clickable div elements instead of real controls. The fix usually isn\u2019t a large JavaScript library. It starts with sensible HTML, visible focus styles, and a small amount of carefully tested behavior.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This guide focuses on the common desktop and mobile pattern: a navigation button opens a panel, the panel contains links or submenus, and users can close it with the Escape key. You\u2019ll also see where CSS-only solutions stop being practical and how to test the finished menu with the tools already built into your browser.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"what-a-keyboard-accessible-menu-must-do\">What a keyboard accessible menu must do<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A usable menu needs to communicate three things clearly: where focus is, whether the menu is open, and what happens when someone presses a key. A visitor using Tab should reach the menu button. Pressing Enter or Space should open it. The button should expose its state, and the links inside should receive focus in a sensible order.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">When the menu opens, the first useful item should be easy to reach. For a compact navigation panel, that usually means moving focus to the first link. When the panel closes, focus should return to the button that opened it. Without that return step, a keyboard user may land somewhere unexpected on the page.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For a simple menu, the expected behavior looks like this:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Tab reaches the menu button and then the visible links.<\/li>\n\n<li>Enter or Space opens the menu when the button is focused.<\/li>\n\n<li>Escape closes the menu and returns focus to the button.<\/li>\n\n<li>Clicking outside the panel closes it, if that behavior won\u2019t cause trouble.<\/li>\n\n<li>Focus never disappears against the background.<\/li>\n\n<li>Screen readers can tell users that the button controls a menu and whether it is expanded.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Don\u2019t confuse a visual dropdown with a menu in the accessibility sense. A row of site links is often just navigation, and a disclosure button may be the right pattern. The word \u201cmenu\u201d has a specific meaning in accessibility guidance, particularly for application-style controls. For ordinary website navigation, a button that reveals links is often simpler and easier to use.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"start-with-the-right-html\">Start with the right HTML<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">HTML gives you useful keyboard behavior for free when you choose the right element. Use a button for an action that opens or closes a panel. Use an anchor for a link that takes the visitor to another URL. Don\u2019t turn a div into a button with a click handler and a role attribute unless you have a strong reason and understand the missing behavior you must rebuild.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A basic structure might look like this:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&lt;button<br>\n\u00a0\u00a0class=&#8221;menu-toggle&#8221;<br>\n\u00a0\u00a0aria-expanded=&#8221;false&#8221;<br>\n\u00a0\u00a0aria-controls=&#8221;site-nav&#8221;&gt;<br>\n\u00a0\u00a0Menu<br>\n&lt;\/button&gt;<br><br>\n&lt;nav id=&#8221;site-nav&#8221; class=&#8221;site-nav&#8221; hidden&gt;<br>\n\u00a0\u00a0&lt;ul&gt;<br>\n\u00a0\u00a0\u00a0\u00a0&lt;li&gt;&lt;a href=&#8221;\/about\/&#8221;&gt;About&lt;\/a&gt;&lt;\/li&gt;<br>\n\u00a0\u00a0\u00a0\u00a0&lt;li&gt;&lt;a href=&#8221;\/services\/&#8221;&gt;Services&lt;\/a&gt;&lt;\/li&gt;<br>\n\u00a0\u00a0\u00a0\u00a0&lt;li&gt;&lt;a href=&#8221;\/contact\/&#8221;&gt;Contact&lt;\/a&gt;&lt;\/li&gt;<br>\n\u00a0\u00a0&lt;\/ul&gt;<br>\n&lt;\/nav&gt;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">aria-expanded tells assistive technology the current state. It must change from false to true when the panel opens. aria-controls connects the button to the element it controls. The matching ID matters.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The hidden attribute is useful because it removes the closed panel from the page\u2019s normal focus order. Don\u2019t hide the panel with opacity alone. An element with opacity: 0 may still be reachable by keyboard, leaving users tabbing through invisible links.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"make-focus-visible-in-a-keyboard-accessible-menu\">Make focus visible in a keyboard accessible menu<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Focus indicators are not decoration. They tell keyboard users where they are. Browser defaults are often adequate, but site-wide CSS can accidentally remove them with rules such as outline: none. If that rule exists, replace it with a clear focus treatment rather than deleting it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">.menu-toggle:focus-visible,<br>\n.site-nav a:focus-visible {<br>\n\u00a0\u00a0outline: 3px solid #155eef;<br>\n\u00a0\u00a0outline-offset: 3px;<br>\n}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">:focus-visible usually shows the indicator when keyboard input needs it, without adding a strong ring after every mouse click. Test it on the real background, not just on a blank page. A pale outline on a white header may technically exist while remaining difficult to see.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Keep the focus style stable when the menu changes. Avoid a design in which the button shifts position after opening, since that can make the focus indicator appear to jump. If the panel pushes content downward, that is often easier to understand than a floating panel that covers the page.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"use-javascript-for-state-not-for-basic-links\">Use JavaScript for state, not for basic links<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The script should manage a small state change: open the panel, update the button, move focus, and close the panel when appropriate. It shouldn\u2019t replace ordinary links or intercept every keyboard event.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">const toggle = document.querySelector(&#8216;.menu-toggle&#8217;);<br>\nconst nav = document.querySelector(&#8216;#site-nav&#8217;);<br>\nconst firstLink = nav.querySelector(&#8216;a&#8217;);<br><br>\nfunction closeMenu() {<br>\n\u00a0\u00a0toggle.setAttribute(&#8216;aria-expanded&#8217;, &#8216;false&#8217;);<br>\n\u00a0\u00a0nav.hidden = true;<br>\n\u00a0\u00a0toggle.focus();<br>\n}<br><br>\nfunction openMenu() {<br>\n\u00a0\u00a0toggle.setAttribute(&#8216;aria-expanded&#8217;, &#8216;true&#8217;);<br>\n\u00a0\u00a0nav.hidden = false;<br>\n\u00a0\u00a0firstLink.focus();<br>\n}<br><br>\ntoggle.addEventListener(&#8216;click&#8217;, () =&gt; {<br>\n\u00a0\u00a0const isOpen = toggle.getAttribute(&#8216;aria-expanded&#8217;) === &#8216;true&#8217;;<br><br>\n\u00a0\u00a0if (isOpen) {<br>\n\u00a0\u00a0\u00a0\u00a0closeMenu();<br>\n\u00a0\u00a0} else {<br>\n\u00a0\u00a0\u00a0\u00a0openMenu();<br>\n\u00a0\u00a0}<br>\n});<br><br>\ndocument.addEventListener(&#8216;keydown&#8217;, (event) =&gt; {<br>\n\u00a0\u00a0if (event.key === &#8216;Escape&#8217; &amp;&amp;<br>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0toggle.getAttribute(&#8216;aria-expanded&#8217;) === &#8216;true&#8217;) {<br>\n\u00a0\u00a0\u00a0\u00a0closeMenu();<br>\n\u00a0\u00a0}<br>\n});<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This example assumes one menu button. If your site has several menus, select each component and attach behavior inside a loop. Avoid using one global ID or one global \u201copen\u201d class for every menu. Each button should control its own panel.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Moving focus to the first link is a sensible choice for a menu that opens as a panel. Some teams leave focus on the button and let the user press Tab. Either approach can work, but the behavior should be predictable and documented in your testing. A menu that opens while focus silently remains elsewhere feels broken.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"how-css-should-hide-and-show-the-panel\">How CSS should hide and show the panel<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The HTML hidden attribute handles the closed state, while CSS controls the visible design. You can use the attribute as a selector:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">.site-nav[hidden] {<br>\n\u00a0\u00a0display: none;<br>\n}<br><br>\n.site-nav {<br>\n\u00a0\u00a0display: block;<br>\n\u00a0\u00a0padding: 1rem;<br>\n\u00a0\u00a0background: white;<br>\n\u00a0\u00a0border: 1px solid #d0d5dd;<br>\n}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For a small screen menu, a normal block panel is often the least troublesome option. It stays in the document flow, remains readable at high zoom, and doesn\u2019t cover the entire page. A fixed drawer can work too, but it introduces more work. You\u2019ll need to manage the drawer\u2019s position, prevent background content from receiving focus, and decide how focus behaves when the drawer closes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Be careful with animation. A closing transition can leave links focusable for a moment after the panel looks closed. If you animate the panel, coordinate the visual transition with its accessibility state. A short fade is rarely worth a keyboard bug.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"handling-dropdowns-inside-the-main-navigation\">Handling dropdowns inside the main navigation<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Nested navigation needs a second decision. If \u201cProducts\u201d goes to a page and also opens a submenu, don\u2019t force one control to perform two unrelated actions. Use a normal link for the page and a separate button for the submenu.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&lt;li class=&#8221;has-submenu&#8221;&gt;<br>\n\u00a0\u00a0&lt;a href=&#8221;\/products\/&#8221;&gt;Products&lt;\/a&gt;<br>\n\u00a0\u00a0&lt;button<br>\n\u00a0\u00a0\u00a0\u00a0aria-expanded=&#8221;false&#8221;<br>\n\u00a0\u00a0\u00a0\u00a0aria-controls=&#8221;products-submenu&#8221;<br>\n\u00a0\u00a0\u00a0\u00a0aria-label=&#8221;Show Products submenu&#8221;&gt;<br>\n\u00a0\u00a0\u00a0\u00a0&lt;span aria-hidden=&#8221;true&#8221;&gt;\u2304&lt;\/span&gt;<br>\n\u00a0\u00a0&lt;\/button&gt;<br><br>\n\u00a0\u00a0&lt;ul id=&#8221;products-submenu&#8221; hidden&gt;<br>\n\u00a0\u00a0\u00a0\u00a0&lt;li&gt;&lt;a href=&#8221;\/products\/widgets\/&#8221;&gt;Widgets&lt;\/a&gt;&lt;\/li&gt;<br>\n\u00a0\u00a0\u00a0\u00a0&lt;li&gt;&lt;a href=&#8221;\/products\/tools\/&#8221;&gt;Tools&lt;\/a&gt;&lt;\/li&gt;<br>\n\u00a0\u00a0&lt;\/ul&gt;<br>\n&lt;\/li&gt;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Hover-only dropdowns exclude keyboard users and are awkward on touchscreens. You can keep hover as a convenience for pointer users, but the button must provide the same access. Don\u2019t make the submenu appear only when a mouse passes over its parent.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nested menus also need a clear close rule. Escape should close the open submenu before closing the entire navigation. That requires a little more state tracking than the basic example, but the principle is simple: close the most recent layer first, then return focus to its controlling button.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"common-mistakes-with-keyboard-accessible-menus\">Common mistakes with keyboard accessible menus<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"using-hover-as-the-only-trigger\">Using hover as the only trigger<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Hover doesn\u2019t exist for keyboard users, and it behaves poorly on phones. It also creates accidental openings when someone moves a pointer across a crowded header. Make the button or link usable on its own.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"removing-the-outline\">Removing the outline<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">A polished visual design is not an excuse to hide focus. Replace the browser ring if needed, but keep a high-contrast alternative. Test with a keyboard after every header redesign.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"leaving-hidden-links-in-the-tab-order\">Leaving hidden links in the tab order<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Absolute positioning, opacity, and off-screen text can hide a panel visually without removing its links from keyboard access. The hidden attribute or a carefully managed display state avoids that trap.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"closing-the-menu-on-every-document-click\">Closing the menu on every document click<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Outside-click behavior is useful, but careless event handling can close the menu when someone clicks inside it. Check whether the click target is outside the button and panel before closing. Also make sure a user can still activate a link without the document handler interrupting it.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"forgetting-small-screens-and-zoom\">Forgetting small screens and zoom<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Test at 200 percent zoom and at a narrow viewport. Text may wrap, buttons may grow taller, and a fixed header may cover the panel. A good keyboard accessible menu should remain usable when the browser zooms or the user increases text size.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"test-the-menu-without-special-software\">Test the menu without special software<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Start with the keyboard. Reload the page, press Tab, and watch where focus goes. Open the panel with Enter, then repeat the test with Space. Tab through every link, press Escape, and confirm that focus returns to the button. Try closing the panel by clicking outside it, then reopen it and use the browser\u2019s Back button after following a link.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Next, use a screen reader if one is available. On Windows, Narrator or NVDA can expose problems that visual testing misses. On Apple devices, VoiceOver is built into macOS and iOS. Listen for the button\u2019s name, expanded state, and the names of links inside the panel.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Browser developer tools can help with the rest. Inspect the button and check that aria-expanded changes. Confirm that the panel\u2019s hidden state matches the visual state. The accessibility tree in Chromium-based browsers can show how controls are being announced.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Test with a mouse, touch, a keyboard, zoom, and a narrow screen. Each input method reveals a different failure. If the menu works only in the developer\u2019s preferred setup, it isn\u2019t finished.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"when-a-library-or-framework-makes-sense\">When a library or framework makes sense<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A small menu rarely needs a third-party package. Plain HTML, CSS, and JavaScript keep the behavior easy to inspect and reduce the number of hidden assumptions. That is especially helpful on a marketing site where the navigation is simple.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A component library may be a good choice for a large application with nested navigation, dialogs, focus trapping, animation, and state shared across multiple layouts. Before adopting one, inspect its actual keyboard behavior. A component can look accessible in a demo and still fail when placed inside your header.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Framework code also needs careful server-rendered output. The page should begin in a usable state before JavaScript finishes loading. A closed mobile panel with a real button and real links is a better starting point than an empty header that only becomes functional after hydration.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If your site has broader browser inconsistencies, the guide on <a href=\"https:\/\/www.itechmagazine.com\/website-looks-different-browsers\/\">why websites look different in every browser<\/a> can help you separate layout bugs from accessibility bugs. They often appear together, but they need different fixes.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"final-verdict\">Final Verdict<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Build a keyboard accessible menu with native buttons, real links, visible focus, accurate expanded state, and a reliable Escape-key path. Keep the first version simple, test it with several input methods, and add focus management only where the interaction truly needs it. A small, predictable menu is better than a flashy header that leaves people guessing.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A keyboard accessible menu should let people open, browse, and close your site\u2019s navigation without touching a mouse. That sounds basic, yet many menus fail because they rely on hover, hide focus outlines, or use clickable div elements instead of real controls. The fix usually isn\u2019t a large JavaScript library. It starts with sensible HTML,<\/p>\n","protected":false},"author":2,"featured_media":3791,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[],"class_list":["post-3788","post","type-post","status-publish","format-standard","has-post-thumbnail","category-web-dev"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v28.5 (Yoast SEO v28.6) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Keyboard Accessible Menu: How to Build One That Works for<\/title>\n<meta name=\"description\" content=\"Keyboard accessible menu.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.itechmagazine.com\/lo\/wp-json\/wp\/v2\/posts\/3788\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Keyboard Accessible Menu: How to Build One That Works for Everyone\" \/>\n<meta property=\"og:description\" content=\"A keyboard accessible menu should let people open, browse, and close your site\u2019s navigation without touching a mouse. That sounds basic, yet many menus\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.itechmagazine.com\/keyboard-accessible-menu-guide\/\" \/>\n<meta property=\"og:site_name\" content=\"iTech Magazine\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/itechmagzine\" \/>\n<meta property=\"article:published_time\" content=\"2026-10-14T09:01:39+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.itechmagazine.com\/wp-content\/uploads\/2026\/10\/keyboard-accessible-menu-guide-featured.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"780\" \/>\n\t<meta property=\"og:image:height\" content=\"500\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Abdul Saboor\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@itech_magazine\" \/>\n<meta name=\"twitter:site\" content=\"@itech_magazine\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Abdul Saboor\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.itechmagazine.com\\\/keyboard-accessible-menu-guide\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.itechmagazine.com\\\/keyboard-accessible-menu-guide\\\/\"},\"author\":{\"name\":\"Abdul Saboor\",\"@id\":\"https:\\\/\\\/www.itechmagazine.com\\\/#\\\/schema\\\/person\\\/0f3f182df81711f1d3730878273e8afe\"},\"headline\":\"Keyboard Accessible Menu: How to Build One That Works for Everyone\",\"datePublished\":\"2026-10-14T09:01:39+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.itechmagazine.com\\\/keyboard-accessible-menu-guide\\\/\"},\"wordCount\":1999,\"publisher\":{\"@id\":\"https:\\\/\\\/www.itechmagazine.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.itechmagazine.com\\\/keyboard-accessible-menu-guide\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.itechmagazine.com\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/keyboard-accessible-menu-guide-featured.jpg\",\"articleSection\":[\"Web Dev\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.itechmagazine.com\\\/keyboard-accessible-menu-guide\\\/\",\"url\":\"https:\\\/\\\/www.itechmagazine.com\\\/keyboard-accessible-menu-guide\\\/\",\"name\":\"Keyboard Accessible Menu: How to Build One That Works for\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.itechmagazine.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.itechmagazine.com\\\/keyboard-accessible-menu-guide\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.itechmagazine.com\\\/keyboard-accessible-menu-guide\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.itechmagazine.com\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/keyboard-accessible-menu-guide-featured.jpg\",\"datePublished\":\"2026-10-14T09:01:39+00:00\",\"description\":\"Keyboard accessible menu.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.itechmagazine.com\\\/keyboard-accessible-menu-guide\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.itechmagazine.com\\\/keyboard-accessible-menu-guide\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.itechmagazine.com\\\/keyboard-accessible-menu-guide\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.itechmagazine.com\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/keyboard-accessible-menu-guide-featured.jpg\",\"contentUrl\":\"https:\\\/\\\/www.itechmagazine.com\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/keyboard-accessible-menu-guide-featured.jpg\",\"width\":780,\"height\":500,\"caption\":\"Keyboard Accessible Menu: How to Build One That Works for Everyone\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.itechmagazine.com\\\/keyboard-accessible-menu-guide\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.itechmagazine.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Keyboard Accessible Menu: How to Build One That Works for Everyone\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.itechmagazine.com\\\/#website\",\"url\":\"https:\\\/\\\/www.itechmagazine.com\\\/\",\"name\":\"iTech Magazine\",\"description\":\"Smart Tech Guides for Modern Users\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.itechmagazine.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.itechmagazine.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.itechmagazine.com\\\/#organization\",\"name\":\"itech Magazine\",\"url\":\"https:\\\/\\\/www.itechmagazine.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.itechmagazine.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.itechmagazine.com\\\/wp-content\\\/uploads\\\/2023\\\/03\\\/cropped-itechmagazine-favicon-1.png\",\"contentUrl\":\"https:\\\/\\\/www.itechmagazine.com\\\/wp-content\\\/uploads\\\/2023\\\/03\\\/cropped-itechmagazine-favicon-1.png\",\"width\":512,\"height\":512,\"caption\":\"itech Magazine\"},\"image\":{\"@id\":\"https:\\\/\\\/www.itechmagazine.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/itechmagzine\",\"https:\\\/\\\/x.com\\\/itech_magazine\",\"https:\\\/\\\/mastodon.online\\\/@itechmagazine\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/itechmagazine\\\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.itechmagazine.com\\\/#\\\/schema\\\/person\\\/0f3f182df81711f1d3730878273e8afe\",\"name\":\"Abdul Saboor\",\"pronouns\":\"he\\\/him\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.itechmagazine.com\\\/wp-content\\\/litespeed\\\/avatar\\\/1e531ff5a09dbe5f3a9fe314a8575b08.jpg?ver=1791912403\",\"url\":\"https:\\\/\\\/www.itechmagazine.com\\\/wp-content\\\/litespeed\\\/avatar\\\/1e531ff5a09dbe5f3a9fe314a8575b08.jpg?ver=1791912403\",\"contentUrl\":\"https:\\\/\\\/www.itechmagazine.com\\\/wp-content\\\/litespeed\\\/avatar\\\/1e531ff5a09dbe5f3a9fe314a8575b08.jpg?ver=1791912403\",\"caption\":\"Abdul Saboor\"},\"description\":\"Abdul Saboor is a technology writer and digital professional covering AI, gadgets, software, web development, digital marketing, blogging, and online business. He focuses on practical, easy-to-understand content that helps readers discover useful technology, tools, and strategies for working and growing online.\",\"sameAs\":[\"https:\\\/\\\/www.itechmagazine.com\\\/\"],\"url\":\"https:\\\/\\\/www.itechmagazine.com\\\/author\\\/abdul-saboor\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Keyboard Accessible Menu: How to Build One That Works for","description":"Keyboard accessible menu.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.itechmagazine.com\/lo\/wp-json\/wp\/v2\/posts\/3788\/","og_locale":"en_US","og_type":"article","og_title":"Keyboard Accessible Menu: How to Build One That Works for Everyone","og_description":"A keyboard accessible menu should let people open, browse, and close your site\u2019s navigation without touching a mouse. That sounds basic, yet many menus","og_url":"https:\/\/www.itechmagazine.com\/keyboard-accessible-menu-guide\/","og_site_name":"iTech Magazine","article_publisher":"https:\/\/www.facebook.com\/itechmagzine","article_published_time":"2026-10-14T09:01:39+00:00","og_image":[{"width":780,"height":500,"url":"https:\/\/www.itechmagazine.com\/wp-content\/uploads\/2026\/10\/keyboard-accessible-menu-guide-featured.jpg","type":"image\/jpeg"}],"author":"Abdul Saboor","twitter_card":"summary_large_image","twitter_creator":"@itech_magazine","twitter_site":"@itech_magazine","twitter_misc":{"Written by":"Abdul Saboor","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.itechmagazine.com\/keyboard-accessible-menu-guide\/#article","isPartOf":{"@id":"https:\/\/www.itechmagazine.com\/keyboard-accessible-menu-guide\/"},"author":{"name":"Abdul Saboor","@id":"https:\/\/www.itechmagazine.com\/#\/schema\/person\/0f3f182df81711f1d3730878273e8afe"},"headline":"Keyboard Accessible Menu: How to Build One That Works for Everyone","datePublished":"2026-10-14T09:01:39+00:00","mainEntityOfPage":{"@id":"https:\/\/www.itechmagazine.com\/keyboard-accessible-menu-guide\/"},"wordCount":1999,"publisher":{"@id":"https:\/\/www.itechmagazine.com\/#organization"},"image":{"@id":"https:\/\/www.itechmagazine.com\/keyboard-accessible-menu-guide\/#primaryimage"},"thumbnailUrl":"https:\/\/www.itechmagazine.com\/wp-content\/uploads\/2026\/10\/keyboard-accessible-menu-guide-featured.jpg","articleSection":["Web Dev"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.itechmagazine.com\/keyboard-accessible-menu-guide\/","url":"https:\/\/www.itechmagazine.com\/keyboard-accessible-menu-guide\/","name":"Keyboard Accessible Menu: How to Build One That Works for","isPartOf":{"@id":"https:\/\/www.itechmagazine.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.itechmagazine.com\/keyboard-accessible-menu-guide\/#primaryimage"},"image":{"@id":"https:\/\/www.itechmagazine.com\/keyboard-accessible-menu-guide\/#primaryimage"},"thumbnailUrl":"https:\/\/www.itechmagazine.com\/wp-content\/uploads\/2026\/10\/keyboard-accessible-menu-guide-featured.jpg","datePublished":"2026-10-14T09:01:39+00:00","description":"Keyboard accessible menu.","breadcrumb":{"@id":"https:\/\/www.itechmagazine.com\/keyboard-accessible-menu-guide\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.itechmagazine.com\/keyboard-accessible-menu-guide\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.itechmagazine.com\/keyboard-accessible-menu-guide\/#primaryimage","url":"https:\/\/www.itechmagazine.com\/wp-content\/uploads\/2026\/10\/keyboard-accessible-menu-guide-featured.jpg","contentUrl":"https:\/\/www.itechmagazine.com\/wp-content\/uploads\/2026\/10\/keyboard-accessible-menu-guide-featured.jpg","width":780,"height":500,"caption":"Keyboard Accessible Menu: How to Build One That Works for Everyone"},{"@type":"BreadcrumbList","@id":"https:\/\/www.itechmagazine.com\/keyboard-accessible-menu-guide\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.itechmagazine.com\/"},{"@type":"ListItem","position":2,"name":"Keyboard Accessible Menu: How to Build One That Works for Everyone"}]},{"@type":"WebSite","@id":"https:\/\/www.itechmagazine.com\/#website","url":"https:\/\/www.itechmagazine.com\/","name":"iTech Magazine","description":"Smart Tech Guides for Modern Users","publisher":{"@id":"https:\/\/www.itechmagazine.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.itechmagazine.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.itechmagazine.com\/#organization","name":"itech Magazine","url":"https:\/\/www.itechmagazine.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.itechmagazine.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.itechmagazine.com\/wp-content\/uploads\/2023\/03\/cropped-itechmagazine-favicon-1.png","contentUrl":"https:\/\/www.itechmagazine.com\/wp-content\/uploads\/2023\/03\/cropped-itechmagazine-favicon-1.png","width":512,"height":512,"caption":"itech Magazine"},"image":{"@id":"https:\/\/www.itechmagazine.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/itechmagzine","https:\/\/x.com\/itech_magazine","https:\/\/mastodon.online\/@itechmagazine","https:\/\/www.linkedin.com\/company\/itechmagazine\/"]},{"@type":"Person","@id":"https:\/\/www.itechmagazine.com\/#\/schema\/person\/0f3f182df81711f1d3730878273e8afe","name":"Abdul Saboor","pronouns":"he\/him","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.itechmagazine.com\/wp-content\/litespeed\/avatar\/1e531ff5a09dbe5f3a9fe314a8575b08.jpg?ver=1791912403","url":"https:\/\/www.itechmagazine.com\/wp-content\/litespeed\/avatar\/1e531ff5a09dbe5f3a9fe314a8575b08.jpg?ver=1791912403","contentUrl":"https:\/\/www.itechmagazine.com\/wp-content\/litespeed\/avatar\/1e531ff5a09dbe5f3a9fe314a8575b08.jpg?ver=1791912403","caption":"Abdul Saboor"},"description":"Abdul Saboor is a technology writer and digital professional covering AI, gadgets, software, web development, digital marketing, blogging, and online business. He focuses on practical, easy-to-understand content that helps readers discover useful technology, tools, and strategies for working and growing online.","sameAs":["https:\/\/www.itechmagazine.com\/"],"url":"https:\/\/www.itechmagazine.com\/author\/abdul-saboor\/"}]}},"_links":{"self":[{"href":"https:\/\/www.itechmagazine.com\/wp-json\/wp\/v2\/posts\/3788","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.itechmagazine.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.itechmagazine.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.itechmagazine.com\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.itechmagazine.com\/wp-json\/wp\/v2\/comments?post=3788"}],"version-history":[{"count":0,"href":"https:\/\/www.itechmagazine.com\/wp-json\/wp\/v2\/posts\/3788\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.itechmagazine.com\/wp-json\/wp\/v2\/media\/3791"}],"wp:attachment":[{"href":"https:\/\/www.itechmagazine.com\/wp-json\/wp\/v2\/media?parent=3788"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.itechmagazine.com\/wp-json\/wp\/v2\/categories?post=3788"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.itechmagazine.com\/wp-json\/wp\/v2\/tags?post=3788"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}