<section class="landing-page">
	<div class="menu-btn"></div>
	<div class="overlay"></div>
	<div class="menu-container">
		<ul class="menu-wrapper">
			<li><a href="">Home</a></li>
			<li><a href="">About</a></li>
			<li><a href="">Services</a></li>
			<li><a href="">Team</a></li>
			<li><a href="">Contact</a></li>
		</ul>
		<div class="menu-underlay"></div>
	</div>

	<div class="landing-page-content">
		<div class="line-1">
			Animated <br />CSS
			Menu
		</div>
	</div>
</section>
$gray: #343436;
$not-black-but-dark: #1c1b20;
$silver: #f8f8f8;

//GLOBAL STYLES
* {
	margin: 0px;
	padding: 0px;
	box-sizing: border-box;

	background-size: cover;
	background-repeat: no-repeat;

	font-family: sans-serif;
}

//MIXIN
@mixin flexcenter {
	display: flex;
	justify-content: center;
	align-items: center;
}

//MAIN CSS
.landing-page {
	//overflow-x: hidden;
	height: 100vh;
	width: 100%;
	background-color: lightcoral;

	.menu-btn {
		position: fixed;
		top: 30px;
		right: 30px;
		height: 50px;
		width: 50px;
		border-radius: 100%;
		background-color: $silver;
		color: $not-black-but-dark;
		z-index: 6;

		&:hover {
			cursor: pointer;
		}
	}

	.menu-btn::before {
		position: absolute;
		top: 0;
		left: 0;
		content: "+";
		//color: $gr;
		width: 100%;
		height: 100%;
		border-radius: 100%;
		text-align: center;
		line-height: 50px;
		font-size: 40px;
		font-weight: 100 !important;
		font-family: serif;
		transition-duration: 500ms;
	}

	.menu-btn.active::before {
		transform: rotate(405deg);
		background-color: $gray;
		color: $silver;
	}

	.overlay {
		position: fixed;
		top: 30px;
		right: 30px;
		height: 50px;
		width: 50px;
		border-radius: 100%;
		background-color: #eeeeee;
		transition-duration: 700ms;
		z-index: 4;

		&.active {
			transform: scale(100, 100);
		}
	}

	.menu-container {
		position: fixed;
		top: 0;
		left: 0;
		height: 100vh;
		width: 100%;
		z-index: -5;
		opacity: 0;
		transition: opacity 1500ms;
		@include flexcenter();

		.menu-wrapper {
			list-style: none;

			li {
				margin: 10px 0;
				//background-color: lightblue;
				display: flex;
				justify-content: left;

				a {
					text-decoration: none;
					letter-spacing: 5px;
					font-weight: 700;
					font-size: 15vmin;
					color: rgba(255, 255, 255, 0);
					-webkit-text-stroke: 1.4px $gray;
					transition-duration: 200ms;

					&:hover {
						color: $gray;
						-webkit-text-stroke: 0px $gray;
					}
				}

				span {
					position: absolute;
					top: 50%;
					left: 50%;
					transform: translate(-50%, -50%);

					font-size: 68vmin;
					font-weight: 900;
					color: rgba(0, 0, 0, 0.2);
				}
			}
		}

		.menu-underlay {
			position: absolute;
			top: 100px;
			left: 100px;
			background-color: lightblue;
		}

		&.active {
			transition-delay: 00ms;
			opacity: 1;
			z-index: 5;
		}
	}

	.landing-page-content {
		position: absolute;
		top: 0;
		left: 0;
		height: 100%;
		width: 100%;
		background-color: $gray;
		color: $silver;
		@include flexcenter();
		flex-direction: column;

		div {
			font-size: 20vmin;
			font-weight: 700;

			span {
				font-size: 40px;
				font-weight: 400;
			}
		}
	}
}
View Compiled
$(".menu-btn").click(function () {
	$(".menu-btn").toggleClass("active");
	$(".overlay").toggleClass("active");
	$(".menu-container").toggleClass("active");
});

const cursor = curDot();

cursor.over(".line-1", {
	borderColor: "rgba(255,255,255,.38)",
	broderWidth: 2
});

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

  1. https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js