-
9 dots navigation menu
HTML
CSS
JavaScript
Apps
Search
Store
Maps
Video
Config
/* Color Variables */ :root { --bg: #ffffff; --menu-bg: #ffffff; --text: #2d3436; --accent: #6c5ce7; --item-hover: #f0eeff; --dot-bg: #2d3436; --shadow: rgba(0, 0, 0, 0.1); } [data-theme="dark"] { --bg: #0f172a; /* Deep Slate */ --menu-bg: #1e293b; /* Lighter Slate for contrast */ --text: #f8fafc; --accent: #a29bfe; /* Lighter purple for dark mode */ --item-hover: #334155; --dot-bg: #f8fafc; --shadow: rgba(0, 0, 0, 0.4); } body { display: flex; justify-content: center; align-items: center; min-height: 100vh; background-color: var(--bg); color: var(--text); font-family: 'Inter', sans-serif; transition: background 0.3s ease; } /* Dark Mode Toggle Button */ .theme-switch { position: absolute; top: 20px; right: 20px; cursor: pointer; padding: 10px; border-radius: 50%; background: var(--menu-bg); border: 1px solid var(--accent); color: var(--text); } /* 9-Dot Layout */ .navigation { position: relative; display: flex; flex-direction: column; align-items: center; } .menu-toggle { display: grid; grid-template-columns: repeat(3, 1fr); gap: 5px; width: 42px; height: 42px; cursor: pointer; transition: 0.4s cubic-bezier(0.68, -0.55, 0.265, 1.55); } .menu-toggle span { width: 8px; height: 8px; background-color: var(--dot-bg); border-radius: 2px; transition: 0.3s ease; } .menu-toggle:hover span { background-color: var(--accent); transform: scale(1.15); } .menu-toggle.active { transform: rotate(45deg); } /* Dropdown Styling */ .menu-content { position: absolute; top: 70px; background: var(--menu-bg); padding: 15px; border-radius: 20px; box-shadow: 0 20px 40px var(--shadow); display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; width: 260px; opacity: 0; visibility: hidden; transform: translateY(-20px); transition: all 0.4s ease; } .menu-content.show { opacity: 1; visibility: visible; transform: translateY(0); } .item { display: flex; flex-direction: column; align-items: center; padding: 12px; border-radius: 14px; color: var(--text); text-decoration: none; transition: 0.2s; } .item:hover { background-color: var(--item-hover); color: var(--accent); transform: translateY(-4px); } .item i { margin-bottom: 6px; } .item span { font-size: 0.7rem; letter-spacing: 0.5px; font-weight: 600; text-transform: uppercase; }
lucide.createIcons(); const btn = document.getElementById('btn'); const menu = document.getElementById('menu'); const themeBtn = document.getElementById('themeBtn'); const body = document.body; const themeIcon = document.getElementById('themeIcon'); // Toggle Menu btn.addEventListener('click', () => { btn.classList.toggle('active'); menu.classList.toggle('show'); }); // Toggle Dark Mode themeBtn.addEventListener('click', () => { const currentTheme = body.getAttribute('data-theme'); const newTheme = currentTheme === 'light' ? 'dark' : 'light'; body.setAttribute('data-theme', newTheme); // Update Icon themeIcon.setAttribute('data-lucide', newTheme === 'light' ? 'moon' : 'sun'); lucide.createIcons(); });
Live Preview