-
Magic Navigation menu
HTML
CSS
JavaScript
Home
Profile
Message
Photos
Settings
:root { --bg: #222327; --clr: #29fd53; } body { display: flex; justify-content: center; align-items: center; min-height: 100vh; background: var(--bg); } .navigation { position: relative; width: 400px; height: 100px; background: #fff; display: flex; justify-content: center; align-items: center; border-radius: 10px; } .navigation ul { display: flex; width: 350px; } .navigation ul li { position: relative; list-style: none; width: 70px; height: 70px; z-index: 1; } .navigation ul li a { position: relative; display: flex; justify-content: center; align-items: center; flex-direction: column; width: 100%; text-align: center; font-weight: 500; } .navigation ul li a .icon { position: relative; display: block; line-height: 75px; font-size: 1.5em; transition: 0.5s; color: var(--bg); } .navigation ul li.active a .icon { transform: translateY(-32px); /* Pops the icon up */ } .navigation ul li a .text { position: absolute; color: var(--bg); font-weight: 400; font-size: 0.75em; letter-spacing: 0.05em; transition: 0.5s; opacity: 0; transform: translateY(20px); } .navigation ul li.active a .text { opacity: 1; transform: translateY(10px); } /* The Bubble Indicator */ .indicator { position: absolute; top: -50%; width: 60px; height: 60px; background: var(--clr); border-radius: 50%; border: 6px solid var(--bg); transition: 0.5s; } /* Logic for indicator movement */ .navigation ul li:nth-child(1).active~.indicator { transform: translateX(calc(70px * 0)); } .navigation ul li:nth-child(2).active~.indicator { transform: translateX(calc(70px * 1)); } .navigation ul li:nth-child(3).active~.indicator { transform: translateX(calc(70px * 2)); } .navigation ul li:nth-child(4).active~.indicator { transform: translateX(calc(70px * 3)); } .navigation ul li:nth-child(5).active~.indicator { transform: translateX(calc(70px * 4)); }
Live Preview