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.
Menu structure by level
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.
div.naviItemthe whole menu, the #SF-… code sits hereul.navigationlist of level 1 itemsli.item.level-1one level 1 itemul.children[menulevel=2]level 2 submenuli.child.level-2one level 2 itemul.children[menulevel=3]level 3 submenuLook up classes by part
Menu frame and menu items
| 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:
- Open your live store, right-click the part of the menu you want to change and choose Inspect.
- Look at the
lianddivtags around that part to see which class names they have. - 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.
The same as Shopify. The menu class structure doesn’t change between platforms.
The same as Shopify. The menu class structure doesn’t change between platforms.