Circle-Menu 1.06
by velo_ninja
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Dynamic Round Menu with Tooltip and Submenus</title>
<style>
body {
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
background-color: #f0f0f0;
margin: 0;
font-family: Arial, sans-serif;
}
.menu {
position: absolute;
display: flex;
align-items: center;
justify-content: center;
perspective: 1000px;
}
.menu-item {
position: absolute;
width: 100px;
height: 100px;
background: #f5f5f5;
border: 2px solid #ddd;
display: flex;
align-items: center;
justify-content: center;
text-align: center;
font-size: 16px;
font-weight: bold;
color: #333;
transition: background-color 0.2s, transform 0.3s, box-shadow 0.3s, z-index 0.3s;
border-radius: 50%;
cursor: pointer;
}
.menu-item:hover {
background-color: red;
color: #fff;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3);
}
.menu-item.selected {
background-color: #000;
color: #fff;
transform: scale(1.1) translateZ(50px);
z-index: 10;
}
.menu-text {
display: inline-block;
transform: rotate(0deg); /* Ensure text is always upright */
}
.submenu {
position: absolute;
width: 150px;
height: 150px;
border-radius: 50%;
background: #ffffff;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
display: none;
transform: translateZ(250px);
...
JavaScript
const menuData = [
{ id: 'item1', title: 'Home', action: () => alert('Home clicked'), submenu: [] },
{ id: 'item2', title: 'About', action: () => alert('About clicked'), submenu: [] },
{ id: 'item3', title: 'Services', action: () => alert('Services clicked'), submenu: [] },
{ id: 'item4', title: 'Contact', action: () => alert('Contact clicked'), submenu: [] },
{ id: 'item5', title: 'Blog', action: () => alert('Blog clicked'), submenu: [] },
{ id: 'item6', title: 'Careers', action: () => alert('Careers clicked'), submenu: [] },
{ id: 'item7', title: 'FAQ', action: () => alert('FAQ clicked'), submenu: [] },
{ id: 'item8', title: 'Support', action: () => alert('Support clicked'), submenu: [] },
{ id: 'item9', title: 'Terms', action: () => alert('Terms clicked'), submenu: [] },
{ id: 'item10', title: 'Privacy', action: () => alert('Privacy clicked'), submenu: [] },
{ id: 'item11', title: 'Sitemap', action: () => alert('Sitemap clicked'), submenu: [] },
{ id: 'item12', title: 'Feedback', action: () => alert('Feedback clicked'), submenu: [] },
{ id: 'item13', title: 'Newsletter', action: () => alert('Newsletter clicked'), submenu: [] }
];