Animated 9 Dots Navigation Menu using Html CSS & Javascript

Animated 9 Dots Navigation Menu using Html CSS & Javascript



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

Comments

No comments yet. Why don’t you start the discussion?

Leave a Reply

Your email address will not be published. Required fields are marked *