Table of Contents
Introduction to Circular Navigation using CSS & JavaScript
Circular navigation menus are an interactive and visually appealing way to organize links in a radial structure. They work well for mobile apps, dashboards, and modern web applications.
Why Use Circular Menus?
- ✅ Enhances User Experience – Provides a unique and interactive way to navigate.
- ✅ Saves Space – Useful for small-screen devices.
- ✅ Attractive Design – Looks more engaging compared to traditional menus.
Understanding the Concept Behind Circular Navigation
Circular navigation works by placing menu items evenly around a center point using CSS transforms.
Key Concepts Used:
- Transformations (
rotate(),translateX()) – Positions elements in a circular layout. - Scaling (
scale()) – Expands or collapses menu items when activated. - Click Events (
toggleClass) – Adds interactivity to the menu.
Setting Up the Basic HTML Structure
We start with a simple HTML structure that includes:
- A central toggle button
- Eight navigation items
HTML Code
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Circular Navigation using CSS & JS</title> <link rel="stylesheet" href="style.css"> </head> <body> <ul class="menu"> <div class="toggle"><ion-icon name="add-outline"></ion-icon></div> <li style="--i:0;"><a href="#"><ion-icon name="home-outline"></ion-icon></a></li> <li style="--i:1"><a href="#"><ion-icon name="person-outline"></ion-icon></a></li> <li style="--i:2;"><a href="#"><ion-icon name="settings-outline"></ion-icon></a></li> <li style="--i:3;"><a href="#"><ion-icon name="mail-outline"></ion-icon></a></li> <li style="--i:4;"><a href="#"><ion-icon name="videocam-outline"></ion-icon></a></li> <li style="--i:5;"><a href="#"><ion-icon name="key-outline"></ion-icon></a></li> <li style="--i:6;"><a href="#"><ion-icon name="game-controller-outline"></ion-icon></a></li> <li style="--i:7;"><a href="#"><ion-icon name="camera-outline"></ion-icon></a></li> </ul> <script type="module" src="https://unpkg.com/ionicons@7.1.0/dist/ionicons/ionicons.esm.js"></script> <script nomodule src="https://unpkg.com/ionicons@7.1.0/dist/ionicons/ionicons.js"></script> <script src="script.js"></script> </body> </html>
- The
<ul>container holds all navigation items. - Each
<li>represents a menu item. - A
togglebutton expands/collapses the menu.
Styling the Circular Navigation with CSS
We use CSS transform properties to position menu items evenly around a circle.
CSS Code
*
{
margin: 0;
padding: 0;
box-sizing: border-box;
}
body
{
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
background: #222327;
}
.menu
{
position: relative;
width: 300px;
height: 300px;
display: flex;
justify-content: center;
align-items: center;
}
.menu .toggle
{
position: absolute;
width: 55px;
height: 55px;
color: #0f0;
border: 2px solid #0f0;
border-radius: 50%;
display: flex;
justify-content: center;
align-items: center;
font-size: 3em;
cursor: pointer;
transition: 0.5s;
}
.menu .toggle.active
{
transform: rotate(315deg);
background: #0f0;
color: #222327;
}
.menu li
{
position: absolute;
left: 10px;
list-style: none;
transform-origin: 140px;
border: 2px solid #0f0;
border-radius: 50%;
transform: rotate(calc(360deg / 8 * var(--i))) translateX(40px);
scale: 0;
transition: 0.5s;
transition-delay: calc(0.1s * var(--i));
}
.menu.active li
{
scale: 1;
}
Key Features of This Styling:
- Menu items are positioned in a circle using
rotate()andtranslateX(). - Clicking the toggle button scales the menu items in/out.
Adding JavaScript for Toggle Effects
We use JavaScript to activate the circular menu on click.
JavaScript Code
let menuToggle = document.querySelector('.toggle');
let menu = document.querySelector('.menu');
let list = document.querySelectorAll('li');
menuToggle.onclick = () => {
menu.classList.toggle('active');
menuToggle.classList.toggle('active');
}
list.forEach(item => item.addEventListener('click', function(){
list.forEach(i => i.classList.remove('active'));
this.classList.add('active');
}));
FAQs on Circular Navigation using CSS & JavaScript
How to make circular navigation smoother?
Use transition: 0.5s ease-in-out; for better animations.
Can I use circular navigation on mobile?
Yes, use CSS media queries to adjust sizes for small screens.
What are some real-world uses of circular navigation?
Game menus 🎮
Mobile navigation apps 📱
Dashboard controls 🖥
Conclusion
Circular Navigation using CSS & JavaScript is a modern and interactive UI feature that enhances user engagement. By using transformations, scaling, and animations, you can create beautiful, animated menus for your website. 🚀

