Vertical Menu for Elementor: Sidebar Navigation That Holds Its Place

October 12, 2026
·
Shahidul Islam
Vertical menu for Elementor shown as a docs sidebar with open sections

A documentation page with twenty articles has a navigation problem. A horizontal bar cannot hold twenty links. A dropdown hides them until someone guesses where to hover. The reader ends up using the search box because the structure is invisible.

A vertical menu solves it by showing the structure. Sections sit in a column down the side, sub items open underneath the parent that owns them, and the current page stays marked while the reader moves around. Nothing collapses behind a hover.

Vertical menu for Elementor as a documentation sidebar
Sections open in place, so the reader never loses the parent they came from.

Where a vertical menu fits

  • Documentation and knowledge bases. Twenty or thirty articles grouped under six headings, all reachable without leaving the page.
  • Account areas. Orders, downloads, payment methods, addresses, support, sign out. A column reads as a control panel.
  • Hotels and venues. Rooms, dining, spa, meetings, getting here. Each item takes an icon and a short label.
  • Shop category sidebars. Clothing, footwear, accessories, jewellery, beauty, nightwear, with sub categories opening under each.
  • Event agendas. Day one, day two, day three, venue and travel, code of conduct.
  • Long service pages. A sticky column that lists every section on the page.

Why it beats the usual approach

Most people reach for a theme widget or a plain list. Both work until the menu needs a second level or a styled active state.

ApproachWhat it costs you
Theme sidebar widgetInherits theme styling, so it rarely matches the page it sits on
Plain unordered listNo sub level behaviour, no active state, no icons
Accordion widgetNot a menu, so it does not read WordPress menu items or mark the current page
Sky Addons vertical menuReads any registered WordPress menu, opens sub levels in place, styles every state
Vertical menu in dark and teal panels
Two panels from the same widget: the markup is identical, only the colour tokens change.

The features that decide it

It reads the menu you already maintain. Select Menu picks any menu registered in Appearance then Menus. Add a page there and it appears in the vertical menu, with no editing in Elementor.

Sub levels open in place. The widget loads metisMenu, a small accordion library for nested lists, so a parent expands underneath itself instead of flying out sideways. Collapse Style decides whether opening one section closes the others.

Every state has its own colours. Normal, Hover and Active are separate tabs. Text colour, icon colour, parent indicator colour, background and border colour are set per state, so the current page can look genuinely current.

Spacing is yours. Item Padding, Item Gap and Icon Spacing are separate controls. A dense docs menu and an airy hotel menu come from the same widget with different numbers.

The container is a surface. Border radius and container padding turn the column into a card, or leave it flush against the page. Layout Width decides whether it fills its column or sits at a fixed size.

Vertical menu at desktop and phone width
At 390px the column runs full width and the touch targets grow with the padding.

How to build one

  1. Build the menu in Appearance then Menus, with real parent and child relationships.
  2. Drop the Vertical Menu widget where the column belongs, usually a narrow left column in a two column section.
  3. Pick the menu in Select Menu, then set Collapse Style to decide whether sections close each other.
  4. Set Item Padding and Item Gap. Docs menus want tight spacing, marketing menus want room.
  5. Style Normal, Hover and Active separately. Give Active a background, not just a colour change.
  6. Check it at 390px. The column becomes a full width block, so the padding you chose is what fingers hit.

Why it works on a long page

A reader who can see the whole structure stops guessing. They scan the column, find the heading that matches their problem, and open it. The parent stays visible while the child list is open, so they always know where they are.

A reader who can see the whole structure stops guessing. That is the entire argument for a column over a bar.

That matters most on pages people arrive at from search. They land deep, mid structure, with no idea what else exists. A vertical menu answers that in one glance.

Vertical menu as a hotel menu with icons
Icons sit beside the label, with their own colour per state.

Getting it right

  • Keep labels short. A vertical menu is a column, and long labels wrap into two lines that break the rhythm.
  • Give the active item a background rather than a colour shift. Colour alone is easy to miss.
  • Use icons only if every item can have one. A half iconed menu looks unfinished.
  • Do not nest three levels deep. Two is navigable, three is a maze.
  • On mobile, decide whether the menu belongs at the top of the page or below the content. A long menu above the article pushes the article off the screen.

What else it can carry

The widget renders a real nested list, so it is not limited to page links. Anchor links to sections on the same page work, which turns the vertical menu into an on page contents column. Category archives, custom post type archives and external links all behave the same way, because they are all just menu items in WordPress.

For a menu that slides between levels instead of expanding them, the Slinky Menu widget covers the same structure with different motion.

Vertical menu as an account panel and an agenda list
The same widget as a dark account panel and as a light agenda list.

Choosing between a column and a bar

A horizontal bar is right when the whole structure fits in one line and every destination is a peer of the others. Home, shop, about, contact. Five items, no hierarchy, no depth.

A vertical menu is right when any of that stops being true. The moment you have more items than fit across the page, or a second level, or groups that mean something, a column reads better than a bar. Text runs left to right, so a column of labels is scannable in a way a crowded bar never is.

There is a middle case worth naming. A site with a wide primary bar and a deep secondary structure should use both: the bar for the five places everyone goes, and a vertical menu inside the section for everything under it. Documentation sites almost always end up here, because the top bar sells the product and the sidebar navigates it.

I would not put a vertical menu on a landing page with one goal. A column of links beside a sales argument gives the reader six ways to leave before they reach the button.

Keeping the menu in step with the page

The active state is doing more work than it looks. WordPress marks the current menu item in the markup, and the widget styles it through the Active tab, so the column answers “where am I” without anyone writing a line of code.

Two habits keep that honest. Build the menu to match the real structure rather than a tidier version of it, because a parent that is not really a parent will never mark correctly. And keep one menu for one area: a docs sidebar and a shop sidebar should be separate menus in WordPress, not one menu with half its items hidden.

When the page has sections rather than pages, anchor links do the same job. Point menu items at fragment URLs and the column becomes a contents list for the page it sits on. It will not mark the active section by itself, which is the one thing to know before you plan a page around it.

Vertical menu: common questions

Is the vertical menu free?

No. The vertical menu is part of Sky Addons Pro. The free plugin includes other navigation widgets, and the free versus Pro page lists what sits where.

Does it need another plugin?

No. It reads menus from WordPress core, which every site already has.

Will it slow the page down?

It loads metisMenu, a small accordion script, and the plugin stylesheet. There is no jQuery UI, no framework and no extra request per menu item.

Does it work on mobile?

Yes. The column becomes a full width block, and sub levels still open in place. Item padding decides the touch target size, so set it with thumbs in mind.

Can it use my existing WordPress menu?

Yes, and that is the point. Select any registered menu. Editing it in Appearance then Menus updates every vertical menu on the site at once.

Worth building

A vertical menu earns its place when the structure is the message. It shows a reader what a section contains before they commit to a click, and it keeps the parent in view while they read the children. Build it from the menu you already maintain, give the active state a real background, and check it at phone width before you publish.

See it running on the vertical menu demo, read the vertical menu documentation for every control, and compare plans on the pricing page. For a menu that hides off canvas instead of sitting in a column, see the offcanvas menu post. The WordPress menu documentation explains how registered menus work, and the W3C navigation guidance covers what a menu owes a keyboard user.

Written by
Shahidul Islam
Writes about the work behind the widgets — what shipped, why, and what it cost.
Share
In this post

More from the journal

Vertical Menu for Elementor: Sidebar Navigation That Holds Its Place

Vertical Menu for Elementor: Sidebar Navigation That Holds Its Place

Build a vertical menu in Elementor from any WordPress menu, with sub levels that open in place, icons beside items and full control over every state.
Advanced Slider for Elementor: Hero Slides With Five Transitions, Free

Advanced Slider for Elementor: Hero Slides With Five Transitions, Free

A free advanced slider for Elementor: five transitions, nine content positions, video backgrounds and Elementor templates as slides, built on Swiper.
Animated Heading for Elementor: Eleven Ways to Move One Line

Animated Heading for Elementor: Eleven Ways to Move One Line

An animated heading for Elementor with eleven styles, from typed and highlight to glitch and word rotate, all driven by one title field. Free widget.

Comments are closed.