Menu design

Menu CSS class reference

This article helps you look up the CSS class names for each part of the menu so you can target them accurately. If you don’t yet know where to paste code or how to write CSS in the app, read Custom CSS, reusable classes and fonts first. When you write in the Custom CSS for this menu box, you don’t need to type the #SF-… code, because Navi+ adds it for you.

In the tables below, the stability column tells you:

  • Stable: part of the basic menu frame. You can rely on it long term.
  • Internal: Navi+ turns these on and off while the menu runs, or for a specific feature. These class names may change when Navi+ is updated. You can still use them, but check them again after app updates.

Menus are built from nested layers. Level 2 and level 3 submenus sit inside the row of their parent item, after that parent item’s content.

Each child level sits inside its parent's row.

Look up classes by part

Part Class Notes Stability
Whole menu .naviItem Sits on the same element that holds the #SF-… code in its id attribute Stable
Level 1 item list ul.navigation Each menu has exactly one of these lists Stable
Level 1 menu item li.item.level-1 Also gets is-parent-top if it contains a submenu Stable
Level 2 and 3 menu items li.child.level-2, li.child.level-3 Also gets is-parent if it contains a submenu Stable
Submenu frame ul.children[menulevel="2"], ul.children[menulevel="3"] The number matches the level of that submenu Stable
Item content box .inner, .inner-level1, .inner-level2, .inner-level3 Use .inner-levelN to target one specific level Stable
Submenu arrow .arrow Usually the first element inside .inner Stable
Cart count .cart_count Only shows on a cart item with the item count turned on Stable
Text column .info, .flexcol Wraps the item name and description line Stable
Item name .name The main text line of the item Stable
Small description .description Only appears if you add a description to the item Stable

Icons and images

Part Class Notes Stability
Icon .icon, .icon i Text-based icon. Change its size and color with .icon i Stable
Image .image-border, .image-box, .image, .image img When the item has an image, the icon doesn’t show Stable

Classes added to individual items

Part Class Notes Stability
Item with a link .has-url   Internal
Item with a divider line .item_divider   Internal
Highlighted item .item_primary An item you’ve set to stand out Internal
Tab or blank space .kind-tab-slide, .kind-blank-space Applies to tab-style items or blank spaces Internal
Your own class The class name you create in Reusable Classes (CSS) Added to the li of the selected item Stable
Class for an item’s CSS .naviicss-… Navi+ adds it when you write CSS with a selector in an item’s CSS box. Don’t call this class directly Internal

Classes by menu type and position

Each menu type adds its own class to .naviItem. Use it when you want CSS that applies to one menu type only.

Menu type Class on .naviItem Stability
Tab Bar STICKY_TABBAR Stable
Mobile Menu CONTEXT_SLIDE Stable
Desktop Mega Menu SECTION_DESKTOP_MEGAMENU Stable
Mobile Mega Menu SECTION_MOBILE_MEGAMENU Stable
Icon Menu SECTION_MOBILE_GRID Stable
Floating Button STICKY_FAB_SUPPORT Stable

For example, to change the font size only in the Tab Bar:

.STICKY_TABBAR .name { font-size: 11px; }

Classes by display position

The position you choose in Menu position and margins, mainly used for Tab Bar, also adds a class to .naviItem. Other menu types sometimes carry some of these classes too, for their default position.

Class Meaning
mobile-bottom, mobile-top Phone: sits at the bottom or top edge of the screen
mobile-left-center, mobile-right-center Phone: sits in the middle of the left or right edge
mobile-left-button, mobile-right-bottom Phone: bottom-left or bottom-right corner. The word button in the left corner class is the real class name, not a typo
desktop-bottom-center-float, desktop-bottom-center, desktop-bottom-left, desktop-bottom-right, desktop-bottom-full, desktop-top-full Computer: positions at the bottom and top of the screen
desktop-left-top, desktop-right-top, desktop-left-full-top, desktop-left-full-center, desktop-right-full-top, desktop-right-full-center Computer: positions along the two side edges

All of these position classes are in the internal group.

Classes when shoppers interact with the menu

Navi+ turns these classes on and off as shoppers use the menu on your store.

State Class Found on Stability
Item matches the page being viewed .navi-active The li of that item and the li of its parent items Stable
Submenu open on a Mega Menu .menu-expand, .menu-expand-level1 The li of the parent item Internal
Shopper is hovering over an item .navi-hover-active The element under the mouse Internal
Level 2 or 3 open on a sliding Mobile Menu .navi-level2-open, .navi-level3-open .naviItem Internal

For example, to remove the grey background of the selected item:

ul li.navi-active { background: initial; }

How to check class names on your store

Class names can differ slightly between versions. To see the exact classes used on your store:

  1. Open your live store, right-click the part of the menu you want to change and choose Inspect.
  2. Look at the li and div tags around that part to see which class names they have.
  3. If the class you expect doesn’t appear, clear your theme’s cache and publish the menu again.

Other platforms

The steps above are for Shopify — the default way.

Did this page help?

Need a hand? Chat with us in the app or write to [email protected] — send your store URL and the menu name.