All Source Code : https://www.patreon.com/onlinetutorials Get now more than 1000+ source code just by clicking on this link …
source
<!doctype html> <html> <head> <meta charset="utf-8"> <title>Animated 9 Dots Menu</title> <link rel="stylesheet" href="style.css"> </head> <body> <div class="menu"> <div class="toggle"><ion-icon name="add-outline"></ion-icon></div> <li style="--x:-1;--y:0;--clr:#ff2972;"> <a href="#"><ion-icon name="home-outline"></ion-icon></a> </li> <li style="--x:1;--y:0;--clr:#fee800;"> <a href="#"><ion-icon name="person-outline"></ion-icon></a> </li> <li style="--x:0;--y:-1;--clr:#04fc43;"> <a href="#"><ion-icon name="settings-outline"></ion-icon></a> </li> <li style="--x:1;--y:1;--clr:#fe00f1;"> <a href="#"><ion-icon name="mail-outline"></ion-icon></a> </li> <li style="--x:-1;--y:-1;--clr:#00b0fe;"> <a href="#"><ion-icon name="key-outline"></ion-icon></a> </li> <li style="--x:0;--y:1;--clr:#fea600;"> <a href="#"><ion-icon name="videocam-outline"></ion-icon></a> </li> <li style="--x:1;--y:-1;--clr:#a529ff;"> <a href="#"><ion-icon name="game-controller-outline"></ion-icon></a> </li> <li style="--x:-1;--y:1;--clr:#01bdab;"> <a href="#"><ion-icon name="camera-outline"></ion-icon></a> </li> </div> <script type="module" src="https://unpkg.com/ionicons@5.5.2/dist/ionicons/ionicons.esm.js"></script> <script nomodule src="https://unpkg.com/ionicons@5.5.2/dist/ionicons/ionicons.js"></script> <script> let toggle = document.querySelector('.toggle'); let menu = document.querySelector('.menu'); toggle.onclick = function(){ menu.classList.toggle('active') } </script> </body> </html>
* { margin: 0; padding: 0; box-sizing: border-box; } body { display: flex; justify-content: center; align-items: center; min-height: 100vh; background: #2f363e; } .menu { position: relative; width: 220px; height: 220px; display: flex; justify-content: center; align-items: center; } .menu li { position: absolute; list-style: none; transition: 0.75s; transition-delay: calc(0.1s * var(--y)); transform: translateX(calc(var(--x) * 16px)) translateY(calc(var(--y) * 16px)); width: 5px; height: 5px; border: 3px solid var(--clr); } .menu.active li { transform: translateX(calc(var(--x) * 80px)) translateY(calc(var(--y) * 80px)); width: 60px; height: 60px; } .menu li ion-icon { scale: 0; transition-delay: transform calc(0.1s * var(--y)); } .menu.active li ion-icon { scale: 1; } .menu li a { position: absolute; inset: 0; font-size: 2em; display: flex; justify-content: center; align-items: center; color: var(--clr); transition: 0.5s; } .menu li a:hover { transition: 0s; background: var(--clr); color: #333; box-shadow: 0 0 10px var(--clr), 0 0 30px var(--clr), 0 0 50px var(--clr); } .toggle { position: absolute; width: 60px; height: 60px; color: #fff; display: flex; justify-content: center; align-items: center; z-index: 10000; cursor: pointer; font-size: 2em; } .menu .toggle ion-icon { transform: scale(0) rotate(0deg); z-index: 1000; font-size: 1.5em; transition: 0.75s; } .menu.active .toggle ion-icon { transform: scale(1) rotate(315deg); } .toggle::before { content: ''; position: absolute; width: 6px; height: 6px; background: #fff; transition: 0.5s; } .menu.active .toggle::before { width: 60px; height: 60px; background: transparent; border: 3px solid #fff; box-sizing: border-box; }