.menu-container
input(type="checkbox" id="menu")
label(for="menu")
.menu
.box
h1 Explore
h1 Connect
h1 Interact
.move-item
View Compiled
$primary: #333;
@import url('https://fonts.googleapis.com/css?family=Montserrat');
@mixin psuedo {
content: '';
position: absolute;
background: $primary;
width: 55px;
height: 3px;
transition: .5s;
transition-delay: .2s;
}
$colors: (
1: #DEF06C,
2: #71C1D1,
3: #DD7171
);
body {
background: #ddd;
overflow: hidden;
font-family: 'Montserrat', sans-serif;
}
.menu-container {
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
width: 100vw;
}
label {
position: relative;
display: flex;
justify-content: center;
align-items: center;
height: 50px;
width: 65px;
cursor: pointer;
transition: .5s;
transition-delay: .7s;
}
#menu {
display: none;
}
#menu:checked ~ label {
transform: translateY(-100px);
}
.menu {
position: relative;
width: 55px;
height: 3px;
background: $primary;
}
.menu:after, .menu:before {
@include psuedo;
}
.menu:after {
top: -10px;
}
.menu:before {
top: 10px;
}
#menu:checked ~ label .menu:after {
transform: translateY(10px); opacity: 0;
}
#menu:checked ~ label .menu:before {
transform: translateY(-10px);
opacity: 0;
}
#menu:checked ~ label .menu {
animation: move .5s ease forwards 1;
animation-delay: .6s;
@keyframes move {
100% {
transform: rotate(45deg);
}
}
}
#menu:checked ~ label .menu:before {
animation: move1 .5s ease forwards 1;
animation-delay: .6s;
@keyframes move1 {
0% {
opacity: 1;
}
100% {
transform: rotate(90deg) translateY(2px) translateX(-8px);
opacity: 1;
height: 3px;
}
}
}
.box {
position: absolute;
background: white;
bottom: 0px;
left: 0px;
width: 100%;
height: 300px;
transition: .8s;
transition-delay: .7s;
overflow: hidden;
transform: translateY(300px);
display: flex;
justify-content: center;
align-items: center;
}
#menu:checked ~ .box {
transform: translateY(0px);
}
h1 {
position: relative;
font-size: 40px;
margin-right: 100px;
cursor: pointer;
&:last-child {
margin-right: 0px;
}
&:first-child {
margin-left: 115px;
}
}
.move-item {
position: absolute;
height: 350px;
width: 350px;
background: #ddd;
border-top-right-radius: 400px;
border-bottom-right-radius: 125px;
top: -270px;
transition: .7s;
transition-delay: .1s;
transform: translateX(-250px) rotate(45deg);
animation: ooz 3s linear infinite;
@keyframes ooz {
0% {
}
50% {
border-bottom-left-radius: 300px;
border-top-right-radius: 0px;
}
}
}
@for $x from 1 through 3 {
h1:nth-child(#{$x}):after {
position: absolute;
content: '';
bottom: 0px;
left: 0px;
width: 100%;
height: 4px;
background: map-get($colors, $x);
}
}
h1:nth-child(1):hover ~ .move-item {
transform: translate(-250px) rotate(45deg);
}
h1:nth-child(2):hover ~ .move-item {
transform: translate(10px) rotate(45deg);
}
h1:nth-child(3):hover ~ .move-item {
transform: translate(280px) rotate(45deg);
}
View Compiled
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.