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;
}

