{"id":2791,"date":"2026-02-06T07:19:17","date_gmt":"2026-02-06T07:19:17","guid":{"rendered":"https:\/\/demo.materiamedica.net\/demo6\/?p=2791"},"modified":"2026-02-06T07:19:17","modified_gmt":"2026-02-06T07:19:17","slug":"chapter-14-navbar-with-icons","status":"publish","type":"post","link":"https:\/\/demo.materiamedica.net\/demo6\/chapter-14-navbar-with-icons\/","title":{"rendered":"Chapter 14: Navbar with Icons"},"content":{"rendered":"<h3 dir=\"auto\">What is a \u201cNavbar with Icons\u201d?<\/h3>\n<p dir=\"auto\">It\u2019s a navigation bar where <strong>each menu item has an icon<\/strong> next to (or instead of) the text.<\/p>\n<p dir=\"auto\">Common places you see this style:<\/p>\n<ul dir=\"auto\">\n<li>Mobile apps (bottom nav bars)<\/li>\n<li>Admin dashboards<\/li>\n<li>SaaS applications<\/li>\n<li>Modern marketing websites<\/li>\n<li>Personal portfolios<\/li>\n<li>Documentation \/ developer sites<\/li>\n<\/ul>\n<h3 dir=\"auto\">Most popular styles in 2025\u20132026<\/h3>\n<div>\n<div dir=\"auto\">\n<table dir=\"auto\">\n<thead>\n<tr>\n<th data-col-size=\"xl\">Style<\/th>\n<th data-col-size=\"lg\">Where it\u2019s used most<\/th>\n<th data-col-size=\"md\">Text visible?<\/th>\n<th data-col-size=\"md\">Best screen sizes<\/th>\n<th data-col-size=\"md\">Mobile friendly?<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td data-col-size=\"xl\">Icon + Text (side by side)<\/td>\n<td data-col-size=\"lg\">Dashboards, desktop apps<\/td>\n<td data-col-size=\"md\">Yes<\/td>\n<td data-col-size=\"md\">Desktop &amp; tablet<\/td>\n<td data-col-size=\"md\">Good<\/td>\n<\/tr>\n<tr>\n<td data-col-size=\"xl\">Icon only (tooltips on hover)<\/td>\n<td data-col-size=\"lg\">Clean\/minimal dashboards<\/td>\n<td data-col-size=\"md\">No<\/td>\n<td data-col-size=\"md\">Desktop<\/td>\n<td data-col-size=\"md\">Needs care<\/td>\n<\/tr>\n<tr>\n<td data-col-size=\"xl\">Bottom navigation bar (mobile)<\/td>\n<td data-col-size=\"lg\">Mobile-first apps &amp; websites<\/td>\n<td data-col-size=\"md\">Yes (small)<\/td>\n<td data-col-size=\"md\">Phones<\/td>\n<td data-col-size=\"md\">Excellent<\/td>\n<\/tr>\n<tr>\n<td data-col-size=\"xl\">Top bar with large icons<\/td>\n<td data-col-size=\"lg\">Creative agencies, portfolios<\/td>\n<td data-col-size=\"md\">Sometimes<\/td>\n<td data-col-size=\"md\">Desktop<\/td>\n<td data-col-size=\"md\">Medium<\/td>\n<\/tr>\n<tr>\n<td data-col-size=\"xl\">Hybrid (icons on desktop, text on mobile)<\/td>\n<td data-col-size=\"lg\">Responsive websites<\/td>\n<td data-col-size=\"md\">Conditional<\/td>\n<td data-col-size=\"md\">All devices<\/td>\n<td data-col-size=\"md\">Very good<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div><\/div>\n<\/div>\n<\/div>\n<p dir=\"auto\">Let\u2019s build the <strong>most common and versatile versions<\/strong> step by step.<\/p>\n<h3 dir=\"auto\">Version 1 \u2013 Classic Top Navbar with Icon + Text (very common)<\/h3>\n<h4 dir=\"auto\">HTML<\/h4>\n<div dir=\"auto\">\n<div data-testid=\"code-block\">\n<div>\n<pre tabindex=\"0\"><code>&lt;header class=\"header\"&gt;\r\n  &lt;nav class=\"navbar container\"&gt;\r\n\r\n    &lt;!-- Logo --&gt;\r\n    &lt;a href=\"\/\" class=\"logo\"&gt;AppName&lt;\/a&gt;\r\n\r\n    &lt;!-- Main navigation with icons --&gt;\r\n    &lt;ul class=\"nav-menu\"&gt;\r\n      &lt;li&gt;\r\n        &lt;a href=\"#\" class=\"nav-item active\"&gt;\r\n          &lt;i class=\"fas fa-home\"&gt;&lt;\/i&gt;\r\n          &lt;span&gt;Home&lt;\/span&gt;\r\n        &lt;\/a&gt;\r\n      &lt;\/li&gt;\r\n      &lt;li&gt;\r\n        &lt;a href=\"#\" class=\"nav-item\"&gt;\r\n          &lt;i class=\"fas fa-compass\"&gt;&lt;\/i&gt;\r\n          &lt;span&gt;Discover&lt;\/span&gt;\r\n        &lt;\/a&gt;\r\n      &lt;\/li&gt;\r\n      &lt;li&gt;\r\n        &lt;a href=\"#\" class=\"nav-item\"&gt;\r\n          &lt;i class=\"fas fa-book-open\"&gt;&lt;\/i&gt;\r\n          &lt;span&gt;Learn&lt;\/span&gt;\r\n        &lt;\/a&gt;\r\n      &lt;\/li&gt;\r\n      &lt;li&gt;\r\n        &lt;a href=\"#\" class=\"nav-item\"&gt;\r\n          &lt;i class=\"fas fa-users\"&gt;&lt;\/i&gt;\r\n          &lt;span&gt;Community&lt;\/span&gt;\r\n        &lt;\/a&gt;\r\n      &lt;\/li&gt;\r\n    &lt;\/ul&gt;\r\n\r\n    &lt;!-- Right side actions --&gt;\r\n    &lt;div class=\"nav-actions\"&gt;\r\n      &lt;a href=\"#\" class=\"nav-item search\"&gt;\r\n        &lt;i class=\"fas fa-search\"&gt;&lt;\/i&gt;\r\n        &lt;span&gt;Search&lt;\/span&gt;\r\n      &lt;\/a&gt;\r\n      &lt;a href=\"#\" class=\"nav-item profile\"&gt;\r\n        &lt;i class=\"fas fa-user-circle\"&gt;&lt;\/i&gt;\r\n        &lt;span&gt;Profile&lt;\/span&gt;\r\n      &lt;\/a&gt;\r\n    &lt;\/div&gt;\r\n\r\n    &lt;!-- Mobile hamburger --&gt;\r\n    &lt;button class=\"hamburger\" aria-label=\"Toggle menu\"&gt;\r\n      &lt;span&gt;&lt;\/span&gt;\r\n      &lt;span&gt;&lt;\/span&gt;\r\n      &lt;span&gt;&lt;\/span&gt;\r\n    &lt;\/button&gt;\r\n  &lt;\/nav&gt;\r\n&lt;\/header&gt;<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<h4 dir=\"auto\">CSS<\/h4>\n<div dir=\"auto\">\n<div data-testid=\"code-block\">\n<div>\n<pre tabindex=\"0\"><code>.navbar {\r\n  display: flex;\r\n  align-items: center;\r\n  justify-content: space-between;\r\n  padding: 1rem 1.5rem;\r\n  background: white;\r\n  border-bottom: 1px solid #e5e7eb;\r\n  max-width: 1400px;\r\n  margin: 0 auto;\r\n}\r\n\r\n.logo {\r\n  font-size: 1.5rem;\r\n  font-weight: 800;\r\n  color: #111827;\r\n  text-decoration: none;\r\n}\r\n\r\n.nav-menu {\r\n  display: flex;\r\n  list-style: none;\r\n  gap: 2rem;\r\n  margin: 0;\r\n}\r\n\r\n.nav-item {\r\n  display: flex;\r\n  align-items: center;\r\n  gap: 8px;\r\n  color: #374151;\r\n  text-decoration: none;\r\n  font-weight: 500;\r\n  padding: 0.6rem 1rem;\r\n  border-radius: 6px;\r\n  transition: all 0.15s ease;\r\n}\r\n\r\n.nav-item:hover {\r\n  background: #f3f4f6;\r\n  color: #111827;\r\n}\r\n\r\n.nav-item.active {\r\n  background: #eff6ff;\r\n  color: #2563eb;\r\n  font-weight: 600;\r\n}\r\n\r\n.nav-item i {\r\n  font-size: 1.2rem;\r\n}\r\n\r\n.nav-actions {\r\n  display: flex;\r\n  gap: 1rem;\r\n}\r\n\r\n\/* Mobile *\/\r\n@media (max-width: 768px) {\r\n  .nav-menu,\r\n  .nav-actions &gt; *:not(.hamburger) {\r\n    display: none;\r\n  }\r\n\r\n  .hamburger {\r\n    display: flex;\r\n    flex-direction: column;\r\n    gap: 5px;\r\n  }\r\n}<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<p dir=\"auto\">(You\u2019ll need Font Awesome or any icon library: &lt;link rel=&#8221;stylesheet&#8221; href=&#8221;https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/font-awesome\/6.5.0\/css\/all.min.css&#8221;&gt;)<\/p>\n<h3 dir=\"auto\">Version 2 \u2013 Icon-only Navbar (with tooltips) \u2013 very clean &amp; modern<\/h3>\n<h4 dir=\"auto\">HTML change<\/h4>\n<div dir=\"auto\">\n<div data-testid=\"code-block\">\n<div>\n<pre tabindex=\"0\"><code>&lt;a href=\"#\" class=\"nav-item active\" data-tooltip=\"Home\"&gt;\r\n  &lt;i class=\"fas fa-home\"&gt;&lt;\/i&gt;\r\n&lt;\/a&gt;<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<h4 dir=\"auto\">CSS additions<\/h4>\n<div dir=\"auto\">\n<div data-testid=\"code-block\">\n<div>\n<div>CSS<\/div>\n<div>\n<pre tabindex=\"0\"><code>.nav-item {\r\n  position: relative;\r\n  padding: 0.8rem;\r\n  font-size: 1.35rem;\r\n}\r\n\r\n.nav-item:hover::after,\r\n.nav-item:focus::after {\r\n  content: attr(data-tooltip);\r\n  position: absolute;\r\n  bottom: -36px;\r\n  left: 50%;\r\n  transform: translateX(-50%);\r\n  background: #1f2937;\r\n  color: white;\r\n  padding: 0.45rem 0.9rem;\r\n  border-radius: 6px;\r\n  font-size: 0.82rem;\r\n  white-space: nowrap;\r\n  pointer-events: none;\r\n  opacity: 0;\r\n  transition: opacity 0.15s;\r\n}\r\n\r\n.nav-item:hover::after,\r\n.nav-item:focus::after {\r\n  opacity: 1;\r\n}\r\n\r\n\/* Optional: active indicator below icon *\/\r\n.nav-item.active::before {\r\n  content: \"\";\r\n  position: absolute;\r\n  bottom: 4px;\r\n  left: 50%;\r\n  transform: translateX(-50%);\r\n  width: 6px;\r\n  height: 6px;\r\n  background: #2563eb;\r\n  border-radius: 50%;\r\n}<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<h3 dir=\"auto\">Version 3 \u2013 Bottom Navigation Bar with Icons (mobile-first style)<\/h3>\n<p dir=\"auto\">This is extremely common in mobile apps and mobile-friendly websites.<\/p>\n<h4 dir=\"auto\">HTML<\/h4>\n<div dir=\"auto\">\n<div data-testid=\"code-block\">\n<div>\n<pre tabindex=\"0\"><code>&lt;nav class=\"bottom-nav\"&gt;\r\n  &lt;a href=\"#\" class=\"nav-item active\"&gt;\r\n    &lt;i class=\"fas fa-home\"&gt;&lt;\/i&gt;\r\n    &lt;span&gt;Home&lt;\/span&gt;\r\n  &lt;\/a&gt;\r\n  &lt;a href=\"#\" class=\"nav-item\"&gt;\r\n    &lt;i class=\"fas fa-search\"&gt;&lt;\/i&gt;\r\n    &lt;span&gt;Search&lt;\/span&gt;\r\n  &lt;\/a&gt;\r\n  &lt;a href=\"#\" class=\"nav-item add\"&gt;\r\n    &lt;i class=\"fas fa-plus-circle\"&gt;&lt;\/i&gt;\r\n  &lt;\/a&gt;\r\n  &lt;a href=\"#\" class=\"nav-item\"&gt;\r\n    &lt;i class=\"fas fa-heart\"&gt;&lt;\/i&gt;\r\n    &lt;span&gt;Favorites&lt;\/span&gt;\r\n  &lt;\/a&gt;\r\n  &lt;a href=\"#\" class=\"nav-item\"&gt;\r\n    &lt;i class=\"fas fa-user\"&gt;&lt;\/i&gt;\r\n    &lt;span&gt;Profile&lt;\/span&gt;\r\n  &lt;\/a&gt;\r\n&lt;\/nav&gt;<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<h4 dir=\"auto\">CSS<\/h4>\n<div dir=\"auto\">\n<div data-testid=\"code-block\">\n<div>\n<pre tabindex=\"0\"><code>.bottom-nav {\r\n  position: fixed;\r\n  bottom: 0;\r\n  left: 0;\r\n  right: 0;\r\n  height: 70px;\r\n  background: white;\r\n  border-top: 1px solid #e5e7eb;\r\n  display: flex;\r\n  align-items: center;\r\n  justify-content: space-around;\r\n  box-shadow: 0 -2px 10px rgba(0,0,0,0.08);\r\n  z-index: 1000;\r\n}\r\n\r\n.nav-item {\r\n  display: flex;\r\n  flex-direction: column;\r\n  align-items: center;\r\n  color: #6b7280;\r\n  text-decoration: none;\r\n  font-size: 0.75rem;\r\n  gap: 4px;\r\n}\r\n\r\n.nav-item i {\r\n  font-size: 1.5rem;\r\n}\r\n\r\n.nav-item.active {\r\n  color: #2563eb;\r\n}\r\n\r\n.nav-item.add {\r\n  color: white;\r\n  background: #2563eb;\r\n  width: 56px;\r\n  height: 56px;\r\n  border-radius: 50%;\r\n  margin-top: -28px;\r\n  box-shadow: 0 6px 15px rgba(37,99,235,0.35);\r\n  font-size: 1.8rem;\r\n}<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<h3 dir=\"auto\">Quick Tips Teachers Always Emphasize<\/h3>\n<ul dir=\"auto\">\n<li><strong>Minimum touch target<\/strong>: 44\u00d744 px (add padding!)<\/li>\n<li><strong>Active state is very important<\/strong>: color + background or underline\/dot<\/li>\n<li><strong>Consistent icon size<\/strong>: 20\u201328px for top nav, 24\u201332px for bottom nav<\/li>\n<li><strong>Use aria-label<\/strong> on icon-only items<\/li>\n<li><strong>Hover + focus<\/strong> styles are mandatory for accessibility<\/li>\n<li><strong>Font Awesome \/ Heroicons \/ Tabler Icons \/ Lucide<\/strong> \u2014 all good free choices<\/li>\n<\/ul>\n<p dir=\"auto\">Would you like to go deeper into one of these directions?<\/p>\n<p dir=\"auto\">Examples:<\/p>\n<ul dir=\"auto\">\n<li>Bottom nav bar with <strong>badge\/notification counter<\/strong><\/li>\n<li>Top navbar with <strong>icon-only on desktop, text+icon on mobile<\/strong><\/li>\n<li>Animated <strong>active indicator<\/strong> that slides between items<\/li>\n<li>Navbar with <strong>dropdown menus<\/strong> that have icons<\/li>\n<li>How to make <strong>vertical sidebar<\/strong> with icons (dashboard style)<\/li>\n<li>How to add <strong>dark mode<\/strong> support<\/li>\n<li>How to use <strong>SVG icons<\/strong> instead of icon font<\/li>\n<\/ul>\n<p dir=\"auto\">Just tell me what you want to focus on next \u2014 I\u2019ll explain it slowly with complete code. \ud83d\ude0a<\/p>\n","protected":false},"excerpt":{"rendered":"<p>What is a \u201cNavbar with Icons\u201d? It\u2019s a navigation bar where each menu item has an icon next to (or instead of) the text. Common places you see this style: Mobile apps (bottom nav&#46;&#46;&#46;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[77],"tags":[],"class_list":["post-2791","post","type-post","status-publish","format-standard","hentry","category-how-to"],"_links":{"self":[{"href":"https:\/\/demo.materiamedica.net\/demo6\/wp-json\/wp\/v2\/posts\/2791","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/demo.materiamedica.net\/demo6\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/demo.materiamedica.net\/demo6\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/demo.materiamedica.net\/demo6\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/demo.materiamedica.net\/demo6\/wp-json\/wp\/v2\/comments?post=2791"}],"version-history":[{"count":1,"href":"https:\/\/demo.materiamedica.net\/demo6\/wp-json\/wp\/v2\/posts\/2791\/revisions"}],"predecessor-version":[{"id":2792,"href":"https:\/\/demo.materiamedica.net\/demo6\/wp-json\/wp\/v2\/posts\/2791\/revisions\/2792"}],"wp:attachment":[{"href":"https:\/\/demo.materiamedica.net\/demo6\/wp-json\/wp\/v2\/media?parent=2791"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/demo.materiamedica.net\/demo6\/wp-json\/wp\/v2\/categories?post=2791"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/demo.materiamedica.net\/demo6\/wp-json\/wp\/v2\/tags?post=2791"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}